Servlet
ServLet
1、 servlet简介
Servlet是sun公司开发动态web(不同的人请求网页,看到的东西不一样)的一门技术。
Sun公司在这些API中提供的一个接口,叫Servlet。如果想开发一个Servlet程序,只需要完成两个步骤:
1.1 编写一个类,实现Servlet接口
1.2 把开发好的java类部署到web服务器中
把实现了Servlet接口的Java程序,叫做Servlet
2、 规范的建立servlet工程
1、构建一个Maven项目(不使用模板)
2、把scr目录删掉,以后的学习就是在这个项目里面建Moudel;这个空的工程就是Maven主工程。
3、把所需要的依赖,尽可能导入到主工程中,且删掉<scope>provided</scope>
1 <dependencies> 2 <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> 3 <dependency> 4 <groupId>javax.servlet</groupId> 5 <artifactId>javax.servlet-api</artifactId> 6 <version>4.0.1</version> 7 <scope>provided</scope> 8 </dependency> 9 <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api --> 10 <dependency> 11 <groupId>javax.servlet.jsp</groupId> 12 <artifactId>javax.servlet.jsp-api</artifactId> 13 <version>2.3.3</version> 14 <scope>provided</scope> 15 </dependency> 16 </dependencies>
4、在主工程中,构建一个servlet项目(使用模板)
3、关于Maven父子工程的理解
1、父项目中,会多了下面的东西:
2、父项目中的jar包,子项目可以直接使用;反之不行
4、Maven环境优化
1、修改web.xml文件,换成新的
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 5 http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 6 version="4.0" 7 metadata-complete="true"> 8 9 </web-app>
2、把Maven的结构搭建完整
5、编写一个Servlet程序
1、编写一个普通类
2、编写servlet程序,首先要继承servlet接口。Servlet接口,Sun公司有两个默认的实现类:HttpServlet和GenericServlet。这里我继承HttpServlet即可。
1 package com.wang.servlet; 2 3 import javax.servlet.ServletException; 4 import javax.servlet.http.HttpServlet; 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7 import java.io.IOException; 8 9 public class HelloServlet extends HttpServlet { 10 @Override 11 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 12 super.doGet(req, resp); 13 } 14 15 @Override 16 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 17 doGet(req, resp); 18 } 19 }
3、重写调用的方法
1 package com.wang.servlet; 2 3 import javax.servlet.ServletException; 4 import javax.servlet.http.HttpServlet; 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7 import java.io.IOException; 8 import java.io.PrintWriter; 9 10 public class HelloServlet extends HttpServlet { 11 @Override 12 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 13 PrintWriter writer = resp.getWriter();//响应流 14 writer.print("Hello,Servlet!"); 15 } 16 17 @Override 18 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 19 doGet(req, resp); 20 } 21 }
6、编写Servlet的映射
1、编写映射的原因:因为刚刚写的是Java程序,但是要通过浏览器访问,浏览器需要连接web服务器,所以要在web服务中注册我们写的Servlet。我们注册的话,还需要给它一个浏览器能够访问的路径。
2、注册和映射:
2.1:<servlet-name>hello</servlet-name>中的名字是随便起的,只要注册和映射中的名字相同就可以;
2.2:一个注册的Servlet(<servlet-class>com.wang.servlet.HelloServlet</servlet-class>)对应一个映射(<url-pattern>/wang</url-pattern>),只要在前端请求这个映射,就会走HelloServlet
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 5 http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" 6 version="4.0" 7 metadata-complete="true"> 8 <!--web.xml中配置web的核心应用--> 9 <!--注册和映射--> 10 <servlet> 11 <!--这个hello的名字是随便起的,只要和下面的mapping中的名字相同就行--> 12 <servlet-name>hello</servlet-name> 13 <servlet-class>com.wang.servlet.HelloServlet</servlet-class> 14 </servlet> 15 <!--一个Servlet对应一个Mapping:映射--> 16 <servlet-mapping> 17 <servlet-name>hello</servlet-name> 18 <!--请求路径--> 19 <!--给它一个请求路径,只要在前端请求wang,就会走HelloServlet--> 20 <url-pattern>/wang</url-pattern> 21 </servlet-mapping> 22 </web-app>
7、配置Tomcat
可以改变名字
8、启动测试
在前台页面,请求刚刚在web.xml中注册和映射的路径:http://localhost:8080/s1/wang
前台找到映射路径 -> 映射路径 -> 找到映射的名字 -> 映射的名字找到名字 -> 名字找到注册的类
然后就执行HelloServlet了