秒懂Servlet的实现和使用

码农公社  210.net.cn   210是何含义?10月24日是程序员节,1024 = 210、210既 210 之意。

1 Servlet简介

 ?Servlet就是sun公司开发动态web的一门技术 

 ?Sun在这些API中提供一个接口叫做:Servlet。

 ?开发一个Servlet程序,只需两步:

  ?编写一个类,实现Servlet接口

  ?把开发好的java类部署到web服务器中。 

实现了Servlet接口的java程序叫做:Servlet。

2 HelloServlet

实现了Servlet接口的默认有两个类:HttpServlet、GenericServlet。

一般直接继承HttpServlet,重写doGet()和doPost()方法。

1.jpg

3 步骤

1)Maven依赖

主要是两个包:

 ?servlet-api

 ?jsp-api

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
            <scope>provided</scope>
        </dependency>

2)写一个类,继承HttpServlet

 ?重写doGet()和doPost()方法。

 ?由于get或者post只是请求的方式不同,业务逻辑一样,可以互相调用。

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取前端传送参数
        String method =req.getParameter("method");
        if("add".equals(method)){
            req.getSession().setAttribute("msg", "执行一个add方法~");
        }
        if("delete".equals(method)){
            req.getSession().setAttribute("msg", "执行一个delete方法~~");
        }
        //进行业务处理
        //转发或重定向到视图,此处为转发到指定页面
        req.getRequestDispatcher("/WEB-INF/jsp/home.jsp").forward(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

3)编写要转发的页面 home.jsp

 ?servlet处理完成后,转发到 /WEB-INF/jsp/home.jsp页面。

 ?页面正文展示${msg},表示servlet返回的msg字段内容。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
    <title>zuka</title>
 </head>
 <body>
  ${msg}
  </body>
</html>

4)编写Servlet映射

为什么需要映射:

 ?Servlet实现类是JAVA程序,是通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web.xml中注册我们写的Servlet。

 ?还需要提供一个浏览器可以访问的路径。

【注意】:/hi中,斜杠/一定不能少,否则IDEA启动Tomcat会报错。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--注册servlet-->
    <servlet>
        <servlet-name>hi</servlet-name>
        <servlet-class>servlet.MyServlet</servlet-class>
    </servlet>
    <!--servlet请求路径,斜杠/不能少,否则启动Tomcat会报错-->
    <servlet-mapping>
        <servlet-name>hi</servlet-name>
        <url-pattern>/hi</url-pattern>
    </servlet-mapping>
</web-app>

5)Tomcat配置

 ?首先确保要测试的工程,至少有一个artifact,若一个都没有,则点击+新增。

1.jpg

 ?新增本地Tomcat测试实例。

1.jpg

1.jpg

1.jpg

6)启动测试

 ?首先进入http://localhost:8080/servlet_war/ ,展示默认页面index.jsp。

1.jpg

?加上servlet访问路径 /hi,并传送参数 ?method=add,进入页面 http://localhost:8080/servlet_war/hi?method=add 。 

 ?映射的servlet 根据前端传送的参数method=add

 ?返回msg内容 "执行了一个add方法~"。

1.jpg

MVC框架做了哪些事情

 ?将URL映射到java类或java类的方法。

 ?封装用户提交的数据。 

 ?处理请求--调用相关的业务处理--封装响应数据。 

 ?将响应的数据进行渲染,jsp/html等表示层数据。

评论