ServLet

Posted wz-beihang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>
View Code

技术图片

技术图片

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>
View Code

技术图片

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 }
View Code

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 }
View Code

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>
View Code

技术图片

7、配置Tomcat

技术图片 技术图片

可以改变名字

技术图片

技术图片

8、启动测试

技术图片

技术图片

在前台页面,请求刚刚在web.xml中注册和映射的路径:http://localhost:8080/s1/wang

前台找到映射路径 -> 映射路径 -> 找到映射的名字 -> 映射的名字找到名字 -> 名字找到注册的类

然后就执行HelloServlet了

技术图片

技术图片

技术图片

技术图片

 

以上是关于ServLet的主要内容,如果未能解决你的问题,请参考以下文章

servlet和filter的区别

Java基础——JSP

java---servlet与filter的联系与区别

servlet,filter,listener,intercepter区别

Tomcat根据JSP生成Servlet机制解析

servlet,过滤器,监听器,拦截器的区别