springboot下使用servlet,fiter

springboot下使用servlet,fiter

使用servlet的两种方法

使用注解的方法
使用@WebServlet(urlPatterns = “/servlet”),设置请求的路径,同时在springbootaplication上使用
@ServletComponentScan(basePackages = “com.yuyi.springboot.servlet”),扫描servlet

package com.yuyi.springboot.servlet;

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

@WebServlet(urlPatterns = "/servlet")
public class StudentServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().println("这是servlet");
        resp.setContentType("text/html;character=utf-8");
        resp.getWriter().flush();
        resp.getWriter().close();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

使用配置类的方法
在类上加@Configuration,声明这是配置类,使用@Bean注解,实现配置方法

import org.springframework.context.annotation.Configuration;

@Configuration
public class ServletConfig {

    @Bean
    public ServletRegistrationBean myservlet(){
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StudentServlet(),"/servlet");

        return servletRegistrationBean;
    }
}

使用Fiter的两种方法

使用注解的方法
使用@WebFilter(urlPatterns = “/servlet”)声明过滤器,并声明过滤路径,同样在springbootaplication上使用@ServletComponentScan,进行扫描。

package com.yuyi.springboot.fiter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(urlPatterns = "/servlet")
public class StudentFiter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("进入过滤器!");
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

使用配置类的方式

package com.yuyi.springboot.conf;

import com.yuyi.springboot.fiter.StudentFiter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.Filter;

@Configuration
public class FiterConfig {

    @Bean
    public FilterRegistrationBean fiter(){
        FilterRegistrationBean filterFilterRegistrationBean = new FilterRegistrationBean(new StudentFiter());
        filterFilterRegistrationBean.addUrlPatterns("/servlet");
        return filterFilterRegistrationBean;
    }
}

设置字符编码格式的两种方法

实际就是fiter,不过人家已经给实现好了
使用配置类

package com.yuyi.springboot.conf;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.CharacterEncodingFilter;

@Configuration
public class CharacterFiter {
    @Bean
    public FilterRegistrationBean register(){
		//新建字符编码过滤器
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setForceEncoding(true);//强制使用设置的字符编码
        characterEncodingFilter.setEncoding("utf-8");//设置成utf-8

        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(characterEncodingFilter);
        filterRegistrationBean.addUrlPatterns("/servlet");
        return filterRegistrationBean;
    }
}

同时关闭springboot自带的字符编码

spring.http.encoding.enabled=false

同时设置浏览器的编码格式

 resp.setContentType("text/html;character=utf-8");

使用springboot自带编码的方式

spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.http.encoding.charset=utf-8

就加这三句话!

猜你喜欢

转载自blog.csdn.net/qq_39428182/article/details/106281039