javaweb-Servlet基础

1、servlet基础

  • Servlet是使用java Servlet接口(API)运行在web应用服务器上的java程序
  • 可以对web浏览器或其他http客户端程序发送的请求进行处理。

1.1、Servlet使用准备

使用Servlet需要导入jar:servlet-api.jar,jsp-api.jar

<!--或在maven项目中,添加servlet、jsp依赖到pom.xml-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId><!--导入servlet依赖到pom.xml-->
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId><!--导入jsp依赖到pom.xml-->
    <version>2.2</version>
    <scope>provided</scope>
</dependency>

1.2、Servlet API常用接口和类

接口:

  • Servlet接口
  • ServletConfig接口
  • HttpServletRequest接口
  • HttpServletResponse接口

类:

  • GenericServlet类
  • HttpServlet类

1.3、Servlet创建

import java.io.IOException;
import javax.servlet.ServletException
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;

@WebServlet("/TestServlet")//使用注解来配置server代码。注解为Servlet 3新增的特性。
public class TestServlet extends HttpServlet {//声明一个对象为Servlet时,需继承HttpServlet类
    //初始化方法
    public void init() throws ServletException {
        super.init();
    }
    //处理HTTP Post请求
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
    }
    //处理HTTP Get请求
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
    }
    //销毁方法
    public void destroy() {
        super.destroy();
    }
}

1.4、Servlet配置

  1. web.xml文件中配置Servlet:告知web容器哪一个请求调用哪一个Servlet对象处理,对Servlet起注册作用。
  2. 使用注解来配置server代码:注解为Servlet 3新增的特性

web.xml文件中配置Servlet

<servlet>
    <servlet-name>MessageServlet</servlet-name><!--Servlet名-->
    <servlet-class>com.jt.servlet.MessageServlet</servlet-class><!--在web上注册,继承HttpServlet类的java类-->
</servlet>
<servlet-mapping>
    <servlet-name>MessageServlet</servlet-name><!--与Servlet名一致-->
    <url-pattern>/MessageServlet</url-pattern><!--映射访问URL-->
</servlet-mapping>

1.5、Servlet过滤器

1.5.1、Filter API

  • Filtet接口

    • 定义过滤器对象时需要实现此接口。
    • 包含三个方法:init(FilterConfig FC), doFilter(ServletRequest SRq, ServletResponse SRp, FilterChain FC), destroy().
  • FilterChain接口

    • 此接口由容器实现。
    • 只有一个方法:doFilter(ServletRequest SRq, ServletResponse SRp) throw IOException,ServletException
  • FilterConfig接口

    • 此接口由容器实现。
    • 用用于获取过滤器初始化期间的参数信息。
    • 方法:getFilterName(), gerInitParameter(String name), getInitParameterNames(), getServletContext()

1.5.2、Filter创建

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter("/NewFilter")
public class NewFilter implements Filter {
    //初始化方法
    public void init(FilterConfig config) throws ServletException {

    }
    //处理过滤器方法
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        chain.doFilter(req, resp);
    }
    //销毁方法
    public void destroy() {
    }
}

1.5.2、Filter配置

  1. web.xml文件中配置。
  2. 使用注解来配置。
<filter><!--声明过滤器-->
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>com.jt.servlet.CharacterEncodingFilter</filter-class>

    <!--设置初始化参数-->
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping><!--映射过滤器-->
    <filter-name>CharacterEncodingFilter</filter-name>

    <!--设置过滤器关联的URL样式,"/*"表示关联所有URL-->
    <url-pattern>/*</url-pattern>

    <!--设置过滤器对应的请求方式-->
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

dispatcher:元素可选值,REQUEST、INCLUDE、FORWARD、ERROR。

posted @ 2020-11-05 21:42  jt_coder  阅读(138)  评论(0)    收藏  举报