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
就加这三句话!