Servlet学习笔记--Servlet基本使用,过滤器

Servlet的基本使用

@WebServlet("/HelloWorld")//域名映射,在网页中通过xx/HelloWorl访问

public class helloworld extends HttpServlet//定义一个类继承HttpServlet类表示这是一个JAVAweb容器

{@Override//重写service()方法并且调用doGet()方法protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExceptiom {

​        req.setCharacterEncoding("UTF-8");//改变容器请求的编码格式

​        resp.setContentType("text/html;charset=UTF-8");//改变容器的返回编码格式

​        resp.setCharacterEncoding("UTF-8");

​        String Class_Select = req.getParameter("SELECT");//使用Servlet里的request.getParameter()方法来获取客户端输入,并且定义一个字符串来保存输入

​        PrintWriter out = resp.getWriter();//定义一个输出文件流,通过out文件流来进行返回数据

​        out.println("xxx");

在项目的目录中有一个web.xml文件,被称为部署文件,意思是覆盖Servlet的标注设置。使用类似于html

<?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-name>Hello</servlet-name>//注册的Servlet名称(你把这个Servlet项目称作什么
    <servlet-class>Helloworld</servlet-class>//实体Servlet名称,你的Javaweb容器的类名称

</servlet>
<servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/Helloworld</url-pattern>//逻辑名称,地址映射,网页通过这个来访问实体
</servlet-mapping>
</web-app>

Servlet过滤器

过滤器顾名思义就是拦截请求或者响应
过滤器的作用:
1.在客户端请求后端数据后,进行过滤筛选,在访问数据之前判断是否拦截

2.在请求完后端数据后,可以进行拦截返回给客户端的响应

3.过滤器可以对request中的数据进行检查,修改

在使用过滤器之前需要对web.xml文件进行部署

过滤器通过Web.xml部署文件进行部署,然后反馈给编写的web程序,当启动web程序的时候,过滤器会给每一个过滤器创建一个实例

 //注册一个过滤器
<filter>
        <filter-name>hellofilter</filter-name>//你的过滤器名字
        <filter-class>filtertest</filter-class>//过滤器实现类名
    </filter>
            //给过滤匹配URL
    <filter-mapping>
        <filter-name>hellofilter</filter-name>//需要部署的类名
        <url-pattern>/*</url-pattern>//表示过滤器部署给所有项目
    </filter-mapping>

Filter(过滤器)的执行顺序与你在web.xml中配置的顺序一致,也就是说你需要把filter写在所有servlet之前

使用过滤器之前需要调用Filter接口

然后创建一个实现过滤器的接口

import java.util.logging.Filter;

public class filtertest implements Filter {

}

使用过滤器的三种方法:
1.public void doFilter (ServletRequest, ServletResponse, FilterChain)
该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain用户访问后续过滤器。
2.public void init(FilterConfig filterConfig)
web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作(filter对象只会创建一次,init方法也只会执行一次)。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。
3.public void destroy()
Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。

一个基本的过滤器:

package Filter;
import javax.servlet.*;
import java.util.logging.Filter;


public class filtertest implements Filter {
    //初始化过滤器
    public void init(FilterConfig config) throws ServletException {
        System.out.println("javaweb被执行了,过滤器实例创建");
        String password = config.getInitParameter("password");//获取数据
        System.out.println("你的密码是:" + password);
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException {

    }
    public void destroy(){
        
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值