JavaWeb开发 —— Web入门

15 篇文章 1 订阅
订阅专栏

目录

一、Spring

二、SpringBootWeb快速入门

三、HTTP协议

1.  概述

2.  请求协议

3.  响应协议

四、Web服务器 - Tomcat

1.  介绍

2.  基本使用

3.  入门程序解析


一、Spring

① 官网: http://spring.io

 Spring 发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定的功能。

③ Spring全家桶:

而我们直接基于 Spring Framework 框架的开发会存在配置繁琐、入门难度大两大缺点。

因此,又推出 Spring Boot 来简化配置、快速开发,但是其底层仍是Spring 。


Spring Boot 可以帮助我们非常快速的构建应用程序、简化开发、提高效率。

如何快速构建一个Spring应用: https://spring.io/quickstart

二、SpringBootWeb快速入门

① 需求:使用 SpringBoot 开发一个web应用,浏览器发起请求 /hello 后,给浏览器返回字符串 "Hello World ~"。

基于 Spring Boot 开发一个Web应用并启动,再打开浏览器并在地址栏访问Web应用(http:协议、localhost:当前本机服务、8080:端口号、/hello:访问的资源),发送请求会被Web程序处理,最终返回字符串给浏览器并展示。

 ② 开发步骤:

  1. 创建 springboot 工程,并勾选web开发相关依赖。
  2. 定义 Hellocontroller 类,添加方法 hello,并添加注解。
  3. 运行测试。
//请求处理类
@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        System.out.println("hello world");
        return "hello world";
    }
}

//启动类:启动Springboot工程
@SpringBootApplication
public class SpringbootWebPro01Application {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootWebPro01Application.class, args);
    }

}

三、HTTP协议

1.  概述

① 概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

  • 客户端浏览器请求服务器获取数据,因此浏览器就需要向服务器端发送请求,服务器端进而向浏览器响应对应数据。
  • 而浏览器向服务器发送请求就需要携带请求数据,服务器接收这些数据后就解析这些数据,而服务器要想成功解析这些数据,就需要知道浏览器发送过来的数据的具体信息。
  • 因此,浏览器和服务器之间要建议一定的协议,浏览器发送数据按照该格式发送,服务器端也按照该格式进行解析。

例如上述 /hello 案例:

 ② 特点:

  1. 基于TCP协议:面向连接,安全
  2. 基于请求-响应模型的:一次请求对应一次响应
  3. HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。缺点:多次请求间不能共享数据。优点:速度快

2.  请求协议

 常见请求头:

Host请求的主机名
User - Agent浏览器版本,例如Chrome浏览器的标识类似MOzilla/5.0 ... Chrome/79,IE浏览器的标识类似Mozilla/5.0 (WindowsNT ....) like Gecko
Accept表示浏览器能接收的资源类型,如 text/* ,image/* 或者 */* 表示所有。
Accept - Language表示浏览器偏好的语言,服务器可以据此返回不同语言的网页。
Accept - Encoding表示浏览器可以支持的压缩类型,例如gzip,deflate等。
Content - Type请求主体的数据类型。
Content - Length请求主体的大小(单位:字节)。

请求方式 - GET:请求参数在请求行中,没有请求体,如:/brand/findAll?name=OPPO&status=1。GET请求大小是有限制的。

请求方式 - POST:请求参数在请求体中,POST请求大小是没有限制的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="get">
  姓名:<input type="text" name = "name">
  密码:<input type="password" name="password">
  <input type="submit" value="提交表单Get">
</form>

<br><br><br>

<form action="" method="post">
  姓名:<input type="text" name = "name">
  密码:<input type="password" name="password">
  <input type="submit" value="提交表单Get">

</form>
</body>
</html>

3.  响应协议

① 响应状态码:

1xx响应中-临时状态码,表示请求已经接收,告诉客户端应该继续请求或者如果它已经完成则忽略它。
2xx成功-表示请求已经被成功接收,处理已完成。
3xx重定向-重定向到其他地方,让客户端再发起一次请求以完成整个处理。
4xx客户端错误-处理发生错误,责任在客户端。如:请求了不存在的资源、客户端未被授权、禁止访问等。
5xx服务器错误-处理发生错误,责任在服务端。如:程序抛出异常等。

② 常见的响应状态码:

状态码英文描述解释
200OK客户端请求成功,即处理成功,这是我们最想看到的状态码
302Found指示所诸求的资源已移动到出Location响应头给定的URL,浏览器会自动重新访问到这个页面。
304Not Modified告诉客户端。你请求的资源至上次取得后,服务端并未更改。你直接用你本地级存吧,隐式重定向。
400Bad Request客户端请求有语法错误,不能被服务器所理解。
403Forbidden服务器收到请求,但是拒绝提供服务,比如:没有权限访问相关资源。
404Not Found请求资源不存在,一般是URL输入有误,或者网站资源被删除了。
405Method Not Allowed请求方式有误,比如应该用GET请求方式的资率,用了POST
428Precondition Required服务器要求有条件的请求,告诉客户端委想访问该资源,必须携带特定的请求头。
429Too Many Requests指示用户在给定时间内发送了太多请求("限速"),配合Retry-After(多长时间后可以请求]响应头一起使用。
431Request Header Fields Too Large请求头太大,服务器不题愈处理请求,因为它的头部字段太大。请求可以在减少请求头域的大小后重新提交。
500Internal Server Error服务器发生不可预期的错误。服务器出异常了,赶紧看日志去吧。
503Service Unavailable服务器尚未准备好处理请求。服务器刚刚启动,还未初始化好。

 状态码大全: http://cloud.tencent.com/developer/chapter/13553

③ 常见响应头:

Content-Type表示该响应内容的类型,例如:text/html,application/json。
Content-Length表示该响应内容的长度(字节数)。
content-Encoding表示该响应压缩算法,例如gzip。
Cache-Control指示客户端应如何缓存,例如:max-age=300表示可以最多缓存300秒。
Set-Cookie告诉浏览器为当前页面所在的域设置cookie。

四、Web服务器 - Tomcat

Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让web开发更加便捷。主要功能是"提供网上信息浏览服务”。

我们只要在服务器端安装一个Web服务器,比如Apache Tomcat,我们就可以将我们开发好的应用部署在Tomcat服务器上,启动服务器后就可以打开浏览器直接访问到部署在Tomcat服务器上的应用程序。

1.  介绍

① 概念:Tomcat是Apache软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范 
② JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJBRMI、JSP、Servlet、XML、JMS、Java lDL、JTS、JTA、JavaMail、JAF。
③ Tomcat 也被称为Web容器、Servlet容器。Servlet程序需要依赖于Tomcat才能运行。
④ 官网: https://tomcat.apache.org/

2.  基本使用

① 下载:官网下载,地址 https://tomcat.apache.org/download-90.cgi

② 安装:绿色版,直接解压即可

③ 卸载:直接删除目录即可

④ 启动:双击:bin\startup.bat

  • 控制台中文乱码:修改 conf / logging.properties
  • java.util.logging.ConsoleHandler.level = FINE
    java.util.logging.ConsoleHtandler.formatter = org.apache.juli.OneLineFormatter
    java.util.logging.ConsoleHandler.encoding = GBK

⑤ 关闭:

  • 直接x掉运行窗口:强制关闭
  • bin\shutdown.bat:正常关闭
  • Ctrl+C:正常关闭

常见问题:

① 启动窗口一闪而过:检查JAVA_HOME环境变量是否正确配置。

② 端口号冲突:找到对应程序,将其关闭掉。

  • 可以通过任务管理器-详细信息,结束掉java.exe进程
  • 也可以重新配置Tomcat端口号(conf/server.xml)
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"/>

注意事项:HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号。

⑥ Tomcat 部署项目:将项目放置到webapps目录下,即部署完成

3.  入门程序解析

① 起步依赖:

  • spring-boot-starter-web:包含了web应用开发所需要的常见依赖。
  • spring-boot-starter-test:包含了单元测试所需要的常见依赖。
  • 官方提供的starter: https://docs.spring.io/spring-boot/docs/2.7.4/reference/htmlsingle/#using.build-systems.starters

② 内嵌Tomcat:

  •  在SpringBoot Web开发当中,已经将Tomcat集成进来。
  •  所以在我们运行启动类在启动SpringBoot项目时,会自动将内部的Tomcat服务器启动起来,并且占用Tomcat默认端口号8080。
  •  而这个端口号并不是之前安装的Web的Tomcat,而是SpringBoot外部环境内置的Tomcat,也叫内嵌Tomcat。

JavaWeb开发教程——入门与提高篇
05-07
JavaWeb开发教程——入门与提高篇JavaWeb开发教程——入门与提高篇JavaWeb开发教程——入门与提高篇JavaWeb开发教程——入门与提高篇
Java Web开发入门书籍实例解析(总结一)
09-02
从事Java Web开发这一段时间来,对Java 面向对象的思想和MVC开发模式可以说已经熟悉了。我当前参与的项目使用的框架是SpringSpringMVC、Hibernate。下面脚本之家小编给大家整理一篇教程帮助大家学习javaweb相关...
javaWeb详细教程
m0_53328239的博客
10-06 5524
Java Web是使用Java技术解决相关Web互联网领域的技术栈,开发一个完整的Java Web项目涉及到静态Web资源、动态Web资源的编写以及项目的部署。在Java Web中,静态Web资源开发技术包括HTML、CSS、JavaScript、XML等;动态Web资源开发技术包括JSP/Servlet等。XML是EXtensible Markup Language的缩写,它是一种类似于HTML的标记语言,称为可扩展标记语言。XML用于提供数据描述格式,适用于不同应用程序之间的数据交换,而且这种交换不以预
JavaWeb开发实战(源码、样式文件已经上传)
张锦的博客
05-24 4671
仅为个人学习使用。
2024年最新一起学Java——IDEA快速开发web应用(1),Java面试基础知识
最新发布
2401_83977696的博客
05-09 268
对于面试,一定要有良好的心态,这位小伙伴面试美团的时候没有被前面阿里的面试影响到,发挥也很正常,也就能顺利拿下美团的offer。小编还整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家,也祝愿大家都能够升职加薪!本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取ms/4f45ff00ff254613a03fab5e56a57acb)收录**
JavaWeb开发 Servlet技术详解
张锦的博客
05-21 1092
仅为个人学习使用。
史上最全面的Javaweb完整学习教程,Java小白必备!
weixin_54585403的博客
09-03 7796
Javaweb是每个学Java的小伙伴都要了解的,那么Javaweb到底需要学哪些内容呢? 今天这篇文章给大家详细的讲解下。 每个 Javaweb初学者都必须掌握的知识内容: 从网络通信、HTML、CSS、JavaScript、MySQL、JDBC、JSP、Servlet等技术开始。 学习具体内容 001.阶段介绍 002.互联网通信流程介绍1 003.互联网通信流程介绍2 004.开发人员在互联网通信担负职责 005.HTML编程语言介绍 006.HTML编程语言作用 007.H
Java自学教程二:JavaWeb教程
Java自学之路
06-18 425
JavaWeb视频教程里包含了Html,JavaScript,Css,Jquery以及基础的Jsp、Servlet的教程。 总体来说,JavaWeb能够教会你做一个网页所需要学习的所有技术,学完以后能够让你写一个简单的网页。 学完之后,我们并不需要对css,js了解的很深,只需要知道常见的html的功能,以及常见的css样式就可以了。因为对于java程序员来说,大部分场景下,你需要做的只是改一下样式,或者基于已有的功能,自己实现一个类似的前端功能。 JavaWeb的Se...
JavaWeb——图书管理系统
03-18
基于servlet/jsp开发Web应用——图书管理系统,实现了用户注册登录,分页查找书籍,借书,还书以及管理员对书籍和用户的一系列管理操作 对于刚入门学习JavaWeb的同学有很大的帮助作用。
许令波——深入分析Java Web技术内幕
10-05
本文档为针对Java Web的技术文档,有网易工程师许令波老师所著,深入分析了jsp、servlet、EL于MVC中的调度关系分析,同时涉及了框架的部分内容,适合于入门不久的猿们用来提升实力,深入理解Java Web的相关机制!
Java Web开发教程——入门与提高篇(JSP+Servlet)》附赠电子资料——框架基础及实例
04-29
本文档是《Java Web开发教程——入门与提高篇(JSP+Servlet)》一书的附赠电子资料,对Struts2、JSF、Hibernate、iBATIS和JPA等框架进行了简单介绍,并且给出了两个自定义简单框架,还包括3个实例,共149页。
Javaweb动态网站笔记
2302_82230885的博客
12-26 1044
web网站主要由两种架构:C/S架构:client/server :客户端和服务端,比如:qq、微信、腾讯视频客户端等B/S架构:browser/server:浏览器和服务端,比如:谷歌浏览器、百度浏览器、qq浏览器等,常用于互联网的网站操作。JSP:java server page,是java动态网站的关键技术,能够实现使用jsp网页来编译执行成静态的html网页。主要组成部分:html+java的动态脚本。
Java Web 基础与实例教程》笔记
m0_56657733的博客
11-15 596
前言(啰嗦几句): 因为自己想做一个小项目但是网上找不到相关的教程(教程虽有但是不适合我这个新手),我又不想学php,看视频的话总感觉没看书那么全面,所以从学校图书馆里借了这么一本书,开始摘笔记。 第一章:Java Web开发基础知识 1.1B/S简述: Web开发实际上是B/S网络架构的软件开发 只要安装了Web服务器软件,任何计算机都可以被称为Web服务器 在此笔记中,Web服务器指的是Tomcat服务器 1.2 静态代码和动态代码 静态代码和动...
JavaWeb基础入门——MySQL数据库安装配置教程
Natural_Pride的博客
01-06 1454
MySQL 是Oracle公司提供的免费的关系型数据库 , 官网 https://www.mysql.com/
JavaWeb 入门
m0_62604616的博客
03-23 1316
JavaWeb 理论知识
基于Java实现的Web服务器与测试工具开发
毕业作品网站
06-20 4195
基于 Java 编程语言,利用 http socket 通信技术,写一个小型的 Web 服务器与一个爬虫的测试工具,来对比分析所写的服务器获取到的页面源码与从 Tomcat 获取的相似度。小型 Web 服务器:支持客户端的网页请求,进行并发处理,缩短请求的响应时间。可响应 GET、POST(HTML、servlet、JSP)页面的请求。对每次网页请求都进行过滤(filter)。支持 request、response 的跳转请求。可维持一个客户端与服务器间的会话(session)。客户端模拟器:通过输入端口连
JavaWeb应用开发框架实例
热门推荐
weixin_42098472的博客
06-12 1万+
一、 概述Web 应用架构可以划分为两大子系统:前端子系统和后台子系统。前端子系统:1. 基础技术: Html/Javascript/CSS / Flash2. 开发框架: jQuery, Extjs , Flex 等;后台子系统:1. 基础技术: Java Servlet;2. 开发框架: Struts, Spring, Hibernate, ibatis 等;3. 应用服务器: Tomcat ...
javaweb程序开发入门 传智播客 pdf
07-14
### 回答1: 《JavaWeb程序开发入门》是由传智播客出版的一本介绍JavaWeb开发的教程,主要面向初学者。这本教程详细介绍了JavaWeb开发的基本概念、常用技术和实践方法。 首先,这本教程提供了JavaWeb开发的基础知识。它介绍了JavaWeb开发的基本原理,如Servlet、JSP等技术的概念和使用方法。它还讲解了JavaWeb开发中的MVC架构模式,帮助读者理解Web应用程序的组织和开发方式。 第二,教程介绍了JavaWeb开发中常用的技术和工具。例如,它讲解了如何使用JavaWeb开发中常用的框架,如Struts、Spring和Hibernate。同时,它还介绍了JavaWeb开发中的数据库设计和访问技术,如MySQL和JDBC等。 第三,教程提供了大量的实例和案例。通过这些实例,读者可以学习如何搭建一个完整的JavaWeb应用程序,包括前端页面的设计和开发,后端业务逻辑的实现以及数据库的设计和使用。 总的来说,《JavaWeb程序开发入门》是一本适合初学者学习JavaWeb开发的教材。它清晰地介绍了JavaWeb开发的基本原理和常用技术,通过实例的演示,帮助读者掌握JavaWeb开发的基本技能。这本教程简洁明了,容易理解,是学习JavaWeb开发的好选择。 ### 回答2: javaweb程序开发入门指的是学习使用Java语言开发Web应用程序的基础知识和技能。而传智播客是一个培训机构,有提供相关的教材,其中也包括了javaweb开发的PDF版本文档。 对于想要学习javaweb开发的人来说,传智播客的PDF文档是一种非常便利的学习资源。这些文档涵盖了javaweb开发的各个方面,包括基础的Java编程语法、常用的开发工具和框架、数据库的使用和设计以及常用的服务器配置等内容。它们提供了一个系统的学习路径,帮助学习者逐步了解和掌握javaweb开发的基本知识和技巧。 通过传智播客的PDF文档,学习者可以按照自己的进度和需求,有针对性地学习相关知识。这些文档也可以很好地配合传智播客的课程使用,帮助学员更好地理解和应用所学知识。 总的来说,传智播客的javaweb开发入门PDF文档是一种非常有用的学习资源,可以帮助初学者系统地学习javaweb开发,并为他们打下坚实的基础。 ### 回答3: 传智播客的Javaweb程序开发入门PDF是一本很受欢迎的教材,对于想要学习Javaweb开发的初学者来说,是一本很好的资源。这本PDF全面介绍了Javaweb的基础知识、开发环境搭建、Servlet、JSP、数据库操作等内容,几乎涵盖了Javaweb开发的方方面面。 在这本PDF中,你将学习到如何搭建Javaweb开发环境,包括下载和安装Java JDK、Eclipse IDE、Tomcat服务器等。之后,你将学习到Servlet的基本概念和使用方法,如何处理HTTP请求和响应,如何使用Servlet来编写后台逻辑代码等。接下来,你将学习到JSP的基础知识,包括JSP的语法、常用标签和表达式的使用方式等。在学习这些基础知识之后,你将学习到如何使用JDBC进行数据库操作,包括连接数据库、执行SQL语句、处理结果集等。 通过阅读这本PDF,你将对Javaweb程序开发的整个流程和步骤有一个全面的了解,并能够独立地开发简单的Javaweb应用程序。当然,这只是入门级别的学习资源,如果你希望进一步深入学习Javaweb开发,还需要进一步学习其他相关的知识,如框架的使用、前端开发等等。 总的来说,传智播客的Javaweb程序开发入门PDF是一本很好的学习资源,对于初学者来说是入门的重要材料。希望通过学习这本PDF,你能够对Javaweb开发有一个良好的基础认识,并能够进一步深入学习和实践。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • JavaWeb开发 —— JavaScript(JS) 12708
  • JAVA进阶 —— Stream流 6185
  • 数据结构MySQL —— 索引 4843
  • JavaWeb开发 —— SpringBootWeb综合案例 3257
  • JAVA进阶 —— 方法引用 3078

分类专栏

  • React.Js基础 3篇
  • JAVA基础入门 33篇
  • JavaWeb开发 15篇
  • 数据库MySQL 12篇
  • JAVA基础进阶 12篇

最新评论

  • JAVA基础 —— 学生管理系统项目设计(控制台版)

    loongyu__: 需要创建多少个包

  • JAVA基础 —— 数组

    敲键盘的小夜猫: 优质好文,博主的文章细节很到位,兼顾实用性和可操作性。感谢博主的分享,文章思路清晰,图文并茂,详略得当。期待博主持续输出好文!三连支持。

  • JavaWeb开发 —— Ajax

    2301_76275491: 请问,准备数据地址过期了,还有别的吗。

  • JavaWeb开发 —— Ajax

    Mask: 接口过期了,能分享一下里面数据吗表情包

  • JAVA进阶 —— 方法引用

    桃红李白: 谢谢你,刚好最近不太想看视频

大家在看

  • Java面试:Redis如何保证数据一致性?
  • 整理好了!2024年最常见 20 道并发编程面试题(四)
  • Linux 【基础篇-vim编辑器 网络配置 远程登录】 1033
  • Java面试:final关键字有什么特点?
  • 如何查看个人大数据信用报告?查询报告哪家好呢? 834

最新文章

  • 零基础入门一文带你了解前端React中组件的使用
  • 零基础入门一文带你了解前端React中JSX的使用技巧
  • 零基础入门一文带你了解前端React的概述以及基本使用
2023年75篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hgngy.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

4617作文网淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男子给前妻转账 现任妻子起诉要回网友建议重庆地铁不准乘客携带菜筐月嫂回应掌掴婴儿是在赶虫子重庆警方辟谣“男子杀人焚尸”国产伟哥去年销售近13亿新的一天从800个哈欠开始男孩疑遭霸凌 家长讨说法被踢出群高中生被打伤下体休学 邯郸通报男子持台球杆殴打2名女店员被抓19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警两大学生合买彩票中奖一人不认账德国打算提及普京时仅用姓名山西省委原副书记商黎光被逮捕武汉大学樱花即将进入盛花期今日春分张家界的山上“长”满了韩国人?特朗普谈“凯特王妃P图照”王树国3次鞠躬告别西交大师生白宫:哈马斯三号人物被杀代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了房客欠租失踪 房东直发愁倪萍分享减重40斤方法“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火手机成瘾是影响睡眠质量重要因素考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼网友洛杉矶偶遇贾玲呼北高速交通事故已致14人死亡西双版纳热带植物园回应蜉蝣大爆发男孩8年未见母亲被告知被遗忘张立群任西安交通大学校长恒大被罚41.75亿到底怎么缴沈阳一轿车冲入人行道致3死2伤奥运男篮美国塞尔维亚同组周杰伦一审败诉网易国标起草人:淀粉肠是低配版火腿肠外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万杨倩无缘巴黎奥运男子被猫抓伤后确诊“猫抓病”春分“立蛋”成功率更高?记者:伊万改变了国足氛围奥巴马现身唐宁街 黑色着装引猜测

4617作文网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化