什么是Web?
Web(World Wide Web)称为万维网,简单理解就是网站,它用来表示Internet 主机上供外界访问的资源。
- 静态资源:指Web页面中供人们浏览的数据始终是不变的。(HTML, CSS)
- 动态资源:指的并不是动态的效果图片等,而是指Web页面中供人们浏览的数据是由程序产生的,不同的时间点,甚至不同的设备访问Web页面看到的内容各不相同。(JSP/Servlet)
- 在Java中,动态Web资源开发技术我们统称为Java Web。
什么是Web服务器?
Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中所有的用户通过浏览器进行访问。
常见的服务器:
开源(即开放源代码,免费):
- Tomcat(主流服务器之一,适合初学者)
- jetty(淘宝,运行效率较高)
- resin(新浪,开源服务器软件中效率最高)
收费:
- WebLogic(Oracle)
- WebSphere(IBM)
Tomcat安装:
- 下载:官网下载(https://tomcat.apache.org)
- 解压安装:不建议放在中文路径下、不建议将服务器软件放在磁盘层次很多的文件夹。
Tomcat启动、访问、修改端口号:
- 启动:进入Tomcat安装目录bin下,双击startup.bat启动程序。(cmd窗口没有出现异常并且结尾出现 Server startup in xxx ms 即启动成功)
- 常见错误:
- Tomcat 闪退:是由于JAVA_HOME配置导致的,请检查JAVA_HOME配置是否正确
- 404:访问资源不存在,请检查URL路径是否正确
- 常见错误:
- 访问:打开浏览器,输入:http://localhost:8080
- 停止:双击 shutdown.bat 即可关闭Tomcat启动窗口。
- 修改端口号:Tomcat默认端口号为8080,可以通过conf/server.xml文件修改。(找到 Connector标签,修改该标签中的 port 属性;修改端口号后需要重启Tomcat)
项目部署及访问静态资源:
创建项目(部署):
- 在webapps中建立文件夹(项目应用),如:myweb (建立文件夹相当于项目部署)
- 创建WEB-INF文件夹,用于存放项目核心内容。(外界无法直接访问)
- 创建classes,用于存放.class文件
- 创建lib,用于存放jar文件
- 创建web.xml,项目配置文件(可以到ROOT文件夹下的WEB-INF下复制一份)
- 将网页index.html(静态资源)复制到myweb文件夹下,且注意与WEB-INF在同级目录,不要放到WEB-INF里。
- 创建WEB-INF文件夹,用于存放项目核心内容。(外界无法直接访问)
URL访问资源:
- 项目创建完毕后,启动Tomcat服务器,在浏览器地址中输入URL:http://localhost:8080/myweb/index.html
- http:协议
- localhost:域名或主机名
- 8080:端口号
- myweb/index.html :资源路径
=========================================================================
Servlet:
- Servlet:Server Applet 的简称,是服务器端的程序(代码、功能实现),可交互的处理客户端发送到服务器端的请求,并完成操作响应。
Servlet作用:
- 接收客户端请求,完成操作。
- 动态生成网页(网页数据可变)。
- 将包含操作结果的动态网页响应给客户端。
搭建开发环境:
将Servlet相关jar包( lib/servlet-api.jar)配置到classpath中 (右键 "我的电脑"-->属性-->高级-->环境变量,添加一个系统变量:名为classpath,值为servlet-api.jar的路径目录+ \servlet-api.jar )
编写Servlet
1.实现Servlet接口:
- 实现javax.servlet.Servlet
- 重写五个方法:
- void init(ServletConfig servletConfig):负责初始化Servlet对象,在整个Servlet生命周期中仅执行一次。
- void service(ServletRequest request, ServletResponse response):Servlet的核心方法;负责交互。
- void destroy():当Servlet对象退出生命周期时,负责释放占有的资源,在整个Servlet生命周期中仅执行一次。
- ServletConfig getServletConfig():获得servlet配置信息对象。
- String getServletInfo():获得servlet的一个描述。
编译、部署、配置、访问Servlet:
编译:cmd命令(javac MyServlet.java)
部署:将编译后生成的MyServlet.class文件复制到webapps/myweb/WEB-INF/classes下。
配置:在web.xml中进行配置
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.it.servlet.Myservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
访问:启动Tomcat后,在浏览器中访问url:localhost:8080/myweb/myservlet
2.继承GenericServlet抽象类:
GenericServlet :实现了Servlet接口,但与HTTP协议无关。
只需要重写service()方法即可,其他四个方法可以选择性地重写。
3.继承HttpServlet抽象类(常用):
HttpServlet: 继承了GenericServlet 抽象类,重写了service()方法。
根据请求方式的不同,父类HttpServlet中重写的service()方法会进行判断请求过来的方式,从而调用相应的doXXX方法。真正逻辑代码通常选择在自己重写的doXXX方法内部编辑。doXXX方法通常是以下方法(可根据自己需要选择性重写):
- doGet():如果servlet支持HTTP GET请求
- doPost():HTTP POST请求
- doPut():HTTP PUT请求
- doDelete():HTTP DELETE请求
Servlet使用Web.xml配置:
<url-pattern>定义匹配规则,取值说明:
- 精确匹配: /具体的名称 只有url路径是具体的名称时才触发servlet
- /action
- 后缀匹配: *.XXX 只要是以*.XXX结尾的就匹配出发servlet
- *.do
- 通配符匹配: /* 匹配所有请求,包含服务器所有资源
- 通配符匹配: / 匹配所有请求,包含服务器除.jsp以外所有资源
<load-on-startup>(配置在<servlet></servlet>标签内的标签)
- 用于设置元素标记容器是否应该在web应用程序启动的时候就加载这个servlet。
- 它的值必须是一个整数,表示servlet被加载的先后顺序。
- 如果该元素的值为负数或者没有设置,则容器会当servlet被请求时再加载。
- 如果值为正数或者0时,表示容器在应用启动时就加载并初始化这个servlet,值越小,servlet的优先级越高,就越先被加载,值相同时,容器就会自己选择顺序来加载。
Servlet使用注解的方式进行配置(servlet3.0):
@WebServlet:
例:
@WebServlet(name="Index",urlPatterns={"/index.do"})
public class Index extends HttpServlet
- name:给Servlet起名字(可省略)
- value:配置url路径,可以配置多个
- urlPatterns:配置url路径,和value作用相同(二者不能同时使用)
- loadOnStartup:配置servlet创建时机,如果是0或正数 启动程序时创建,如果是负数 则访问时创建。数值越小优先级越高。
Web.xml 和注解可以同时存在(同时配置)。