zoukankan      html  css  js  c++  java
  • springboot 干掉 web.xml

    原始的web.xml里有4个配置,上篇文章已经把springmvc的解决了

    1. spring redis session的filter

    2. shiro的filter

    3. 编码字符集filter       

    4. 和一个监听器

    代码如下,其中第1,3,4个默认已经集成,不需要再配置,

    <?xml version="1.0" encoding="UTF-8"?>  
     <web-app xmlns="http://java.sun.com/xml/ns/javaee"  
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
     version="2.5">  
    <!-- needed for ContextLoaderListener -->
        
    <filter>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>springSessionRepositoryFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      
        <!-- <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </context-param> -->
    
        <!-- Bootstraps the root web application context before servlet initialization -->
         <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        
        <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
        <servlet>
            <servlet-name>springDispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:spring-mvc.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <!-- Map all requests to the DispatcherServlet for handling -->
         <servlet-mapping>
            <servlet-name>springDispatcherServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping> 
        
    
        <!-- 权限管理 shiro -->
     <filter>
            <filter-name>shiroFilter</filter-name>
            <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
            <init-param>
                <param-name>targetFilterLifecycle</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
    
        <filter-mapping>
            <filter-name>shiroFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        字符集转码
        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>utf-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
       
     
     
     </web-app>

    需要配置的是 shiro的过滤器

    @Bean
        public FilterRegistrationBean<DelegatingFilterProxy> filterRegistrationBean(){
            FilterRegistrationBean<DelegatingFilterProxy> filterRegistrationBean = new FilterRegistrationBean<>();
            // 新建一个代理对象

    DelegatingFilterProxy proxy
    = new DelegatingFilterProxy(); proxy.setTargetBeanName("shiroFilter"); proxy.setTargetFilterLifecycle(true); //注册, filterRegistrationBean.setFilter(proxy);
    // //只要经过前端过滤器的,也都经过这个过滤器 "dispatcherServlet” Collection
    <String> servletNames = new ArrayList<String>(); servletNames.add(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_BEAN_NAME); //默认是"dispatcherServlet" filterRegistrationBean.setServletNames(servletNames);
        //上面这段,测试时不加也可以,直接返回也能得到filter
    return filterRegistrationBean; }

    另外如果发现mybatis出现 查询结果toomany的异常,检测数据库的结果是否是唯一,比如我添加了两条重复的作者和yaoid的解释,就报这个错误。

  • 相关阅读:
    antd vue如何在父组件里打开子组件(子组件是个模态框)?
    webpack知识点整理
    JavaScript中常用的方法汇总,全部整理好了,一定要收藏!
    从地址栏里面获取参数的值
    何为垫片?垫片是一种什么概念在js中?
    async 与 await使用
    纯手撸Promise
    如何使用 Promise?
    Notification 浏览器桌面通知的使用
    学习骨架屏(Skeleton Screens)技术
  • 原文地址:https://www.cnblogs.com/sdgtxuyong/p/14431300.html
Copyright © 2011-2022 走看看