• Spring Boot与Web组件,值得学习(附加记住idea快捷键)


    目录

     拦截器

     Servlet

     过滤器Filter

    字符集过滤器

              idea快捷键


     拦截器

    拦截器是SpringMVC中一种对象,能拦截器对Controller的请求。

    拦截器框架中有系统的拦截器, 还可以自定义拦截器。 实现对请求预先处理。

    实现自定义拦截器:

    1. 创建类实现SpringMVC框架的HandlerInterceptor接口

    1. public interface HandlerInterceptor {
    2. default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    3. return true;
    4. }
    5. default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
    6. }
    7. default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
    8. }
    9. }

    2.需在SpringMVC的配置文件中,声明拦截器

    1. <mvc:interceptors>
    2. <mvc:interceptor>
    3. <bean class="拦截器类全限定名称"/>
    4. mvc:interceptor>
    5. mvc:interceptors>

     SpringBoot中注册拦截器:

     

    login是排除用的 

    1. @Configuration
    2. public class MyAppConfig implements WebMvcConfigurer {
    3. //添加拦截器对象, 注入到容器中
    4. @Override
    5. public void addInterceptors(InterceptorRegistry registry) {
    6. //创建拦截器对象
    7. HandlerInterceptor interceptor = new LoginInterceptor();
    8. //指定拦截的请求uri地址
    9. String path []= {"/user/**"};
    10. //指定不拦截的地址
    11. String excludePath [] = {"/user/login"};
    12. registry.addInterceptor(interceptor)
    13. .addPathPatterns(path)
    14. .excludePathPatterns(excludePath);
    15. }
    16. }

    Servlet

    在SpringBoot框架中使用Servlet对象。

    使用步骤:

    1. 创建Servlet类。 创建类继承HttpServlet

    2. 注册Servlet ,让框架能找到Servlet

    1.创建自定义Servlet

    1. //创建Servlet类
    2. public class MyServlet extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    5. doPost(req,resp);
    6. }
    7. @Override
    8. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    9. //使用HttpServletResponse输出数据,应答结果
    10. resp.setContentType("text/html;charset=utf-8");
    11. PrintWriter out = resp.getWriter();
    12. out.println("===执行的是Servlet==");
    13. out.flush();
    14. out.close();
    15. }
    16. }

    2. 注册Servlet

    1. @Configuration
    2. public class WebApplictionConfig {
    3. //定义方法, 注册Servlet对象
    4. @Bean
    5. public ServletRegistrationBean servletRegistrationBean(){
    6. //public ServletRegistrationBean(T servlet, String... urlMappings)
    7. //第一个参数是 Servlet对象, 第二个是url地址
    8. //ServletRegistrationBean bean =
    9. //new ServletRegistrationBean( new MyServlet(),"/myservlet");
    10. ServletRegistrationBean bean = new ServletRegistrationBean();
    11. bean.setServlet( new MyServlet());
    12. bean.addUrlMappings("/login","/test"); //
    13. return bean;
    14. }
    15. }

     

     过滤器Filter

    Filter是Servlet规范中的过滤器,可以处理请求, 对请求的参数, 属性进行调整。 常常在过滤器中处理字符编码

    在框架中使用过滤器:

    1. 创建自定义过滤器类

    2. 注册Filter过滤器对象

    query是没有内容的!

    1. // 自定义过滤器
    2. public class MyFilter implements Filter {
    3. @Override
    4. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    5. System.out.println("执行了MyFilter,doFilter ");
    6. filterChain.doFilter(servletRequest,servletResponse);
    7. }
    8. }

    Ctrl+o

    注册Filter

    1. @Configuration
    2. public class WebApplicationConfig {
    3. @Bean
    4. public FilterRegistrationBean filterRegistrationBean(){
    5. FilterRegistrationBean bean = new FilterRegistrationBean();
    6. bean.setFilter( new MyFilter());
    7. bean.addUrlPatterns("/user/*");
    8. return bean;
    9. }
    10. }

    字符集过滤器

    CharacterEncodingFilter : 解决post请求中乱码的问题

    在SpringMVC框架, 在web.xml 注册过滤器。 配置他的属性。

     

     

     

          第一种方式:

           使用步骤:

    1.     配置字符集过滤器

      1. @Configuration
      2. public class WebSystemConfig {
      3. //注册Servlet
      4. @Bean
      5. public ServletRegistrationBean servletRegistrationBean(){
      6. MyServlet myServlet = new MyServlet();
      7. ServletRegistrationBean reg = new ServletRegistrationBean(myServlet,"/myservlet");
      8. return reg;
      9. }
      10. //注册Filter
      11. @Bean
      12. public FilterRegistrationBean filterRegistrationBean(){
      13. FilterRegistrationBean reg = new FilterRegistrationBean();
      14. //使用框架中的过滤器类
      15. CharacterEncodingFilter filter = new CharacterEncodingFilter();
      16. //指定使用的编码方式
      17. filter.setEncoding("utf-8");
      18. //指定request , response都使用encoding的值
      19. filter.setForceEncoding(true);
      20. reg.setFilter(filter);
      21. //指定 过滤的url地址
      22. reg.addUrlPatterns("/*");
      23. return reg;
      24. }
      25. }

      修改application.properties文件, 让自定义的过滤器起作用

      1. #SpringBoot中默认已经配置了CharacterEncodingFilter。 编码默认ISO-8859-1
      2. #设置enabled=false 作用是关闭系统中配置好的过滤器, 使用自定义的CharacterEncodingFilter
      3. server.servlet.encoding.enabled=false

      第二种方式

      修改application.properties文件 

       

      1. server.port=9001
      2. server.servlet.context-path=/myboot
      3. #让系统的CharacterEncdoingFilter生效
      4. server.servlet.encoding.enabled=true
      5. #指定使用的编码方式
      6. server.servlet.encoding.charset=utf-8
      7. #强制requestresponse都使用charset属性的值
      8. server.servlet.encoding.force=true

    快捷键

    ctrl+ait+b=进入实现类

    ctrl+shift+f=全局搜索

    ait+鼠标跳格选择

    ctrl+alt+←返回上一步操作处

    ctrl+alt+v 生成返回值对象快捷键

    alt+←或→左右切换已打开的类

    ctrl+r搜索并替换

    ctrl+o查看并选择继承覆盖当前类的方法

    shift+箭头 左右选择一位

    ctrl+箭头 左右跳一个完整的单词

    ctrl++shift+箭头 左右选全一个完整的单词

    IDEA对选中的多行代码上下左右移动
    选中代码
    代码右移:TAB键
    代码左移:shift+TAB键
    代码上移:shift+alt +方向键上
    代码下移:shift+alt +方向键下

     

  • 相关阅读:
    臻图信息ZTMapGIS系统助力智慧城市建设
    Typora收费了, 还有哪些好用的markdown工具
    编译无法加载主类的问题
    NNDL:作业3:分别使用numpy和pytorch实现FNN例题
    JMeter-BeanShell预处理程序和BeanShell后置处理程序的应用
    [资源推荐]看到一篇关于agent的好文章
    Chrome 103支持使用本地字体,纯前端导出PDF优化
    项目实践《小说网站数据爬取》
    Docker重量级监控系统CIG - CAdvisor + InfluxDB + Grafana
    SpringCloudAlibaba系列之Nacos配置管理
  • 原文地址:https://blog.csdn.net/weixin_48826996/article/details/126359186