• spring mvc集成shiro的web.xml配置详解


    <?xml version="1.0" encoding="UTF-8" ?>
    <web-app version="2.5"
    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">
    <display-name>lanyuan-ace</display-name>

    <!--过滤字符集-->
    <filter>
    <filter-name>encoding</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>
    </filter>
    <filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 配置springmvc servlet -->
    <!--如果使用如上配置,Spring Web
    MVC框架将加载“classpath:spring-mvc.xml”来进行初始化上下文
    而不是“/WEB-INF/[servlet名字]-servlet.xml”。-->
    <servlet>
    <servlet-name>springmvc</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>
    <!--表示启动容器时初始化该Servlet;-->
    <!--1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。

    2)它的值必须是一个整数,表示servlet应该被载入的顺序

    2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;

    3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。

    4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。

    5)当值相同时,容器就会自己选择顺序来加载。-->
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <!-- / 表示所有的请求都要经过此serlvet;此配置是后缀名为.shtml的请求经过spring mvc来处理
    其他的像一些静态资源不需要spring mvc来处理 -->
    <url-pattern>*.shtml</url-pattern>
    </servlet-mapping>

    <!-- spring的监听器 -->
    <!--
    context-param
    作用:该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数。
    param-name 设定上下文的参数名称。必须是唯一名称
    param-value 设定的参数名称的值
    初始化过程:
    在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener>和<contex-param>。
    接着容器会创建一个ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文。
    接着容器会将读取到<context-param>转化为键值对,并交给ServletContext。
    容器创建<listener></listener>中的类实例,即创建监听(备注:listener定义的类可以是自定义
    的类但必须需要继承ServletContextListener)。
    在监听的类中会有一个contextInitialized(ServletContextEvent event)初始化方法,在这个方法中可以
    通过event.getServletContext().getInitParameter("contextConfigLocation") 来得到context-param 设定的值。
    在这个类中还必须有一个contextDestroyed(ServletContextEvent event) 销毁方法.用于关闭应用前释放资源,
    比如说数据库连接的关闭。
    得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.
    这个动作会比所有的Servlet都要早。-->
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-shiro.xml,classpath:spring-application.xml</param-value>
    </context-param>
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
    <listener>
    <listener-class>
    org.springframework.web.context.request.RequestContextListener
    </listener-class>
    </listener>
    <!-- Shiro配置 -->
    <filter>
    <filter-name>shiroFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>shiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- <error-page>
    <error-code>404</error-code>
    <location>/404/404.jsp</location>
    </error-page>
    <error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/error.jsp</location>
    </error-page> -->




    <!--
    ① 在web.xml文件中经常看到这样的配置<servlet-name>default</servlet-name>,
    这个配置的作用是:对客户端请求的静态资源如图片、JS文件等的请求交由默认的servlet进行处理,
    ②Tomcat, Jetty, JBoss, and GlassFish 自带的默认Servlet的名字 - "default"
    Google App Engine 自带的 默认Servlet的名字 - "_ah_default"
    Resin 自带的 默认Servlet的名字 - "resin-file"
    WebLogic 自带的 默认Servlet的名字 - "FileServlet"
    WebSphere 自带的 默认Servlet的名字 - "SimpleFileServlet"
    ③在spring3.0.4以后版本提供了mvc:resources , 使用方法:
    <mvc:resources mapping="/images/**" location="/images/" />
    如果出现下面的错误,可能是没有配置<mvc:annotation-driven />的原因。
    报错WARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770]
    in DispatcherServlet with name 'springMVC'
    ④使用<mvc:default-servlet-handler/>
    <mvc:default-servlet-handler/>
    会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到
    org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler处理并返回.
    DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet.
    ④⑤
    -->
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.eot</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.ttf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.xml</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.swf</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.zip</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.woff</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
    <welcome-file>login.shtml</welcome-file>
    </welcome-file-list>

    <!--,发现直接修改welcome-file为一个action请求不生效。
    经过查询资料发现有如下三种解决办法:
    1. <welcome-file-list>
    <welcome-file>/index.action</welcome-file>
    </welcome-file-list>

    然后在webapp目录下新建一个空文件index.action

    2. <welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
    </welcome-file-list>

    在jsp中做重定向跳转

    3.<welcome-file-list>
    <welcome-file>/index.html</welcome-file>
    </welcome-file-list>

    在html中使用META重定向操作:<META HTTP-EQUIV="Refresh" CONTENT="0;URL=max/HelloWorld.action">

    其中,content="1 是时间控制,表示1秒后自动跳转到要跳转的页面. content="0 表示打开该页后立即跳转到你要跳转的页面. url 是要跳转的路径

    综上所述,个人感觉第一个方法简洁方便快速。当欢迎页面查找index.action,并进行页面请求时会经过struts拦截器,从而间接的发起action请求。-->
    </web-app>
  • 相关阅读:
    【ASP.NET 插件】zyUpload的HTML5上传插件
    【软件】图文解释XCode常用快捷键的使用
    【软件使用】Windows下的Objective-C集成开发环境搭建(IDE)
    【Javascript Demo】移动端访问PC端网页时跳转到对应的移动端网页
    【网络文摘】30多年程序员生涯经验总结
    【算法】网上看到的5个问题
    【ASP.NET 进阶】定时执行任务
    【ASP.NET 基础】Page类和回调技术
    【ASP.NET 基础】表单和控件
    【ASP.NET 基础】ASP.NET内置对象
  • 原文地址:https://www.cnblogs.com/li1111xin/p/5217752.html
Copyright © 2020-2023  润新知