设为首页 收藏本站
查看: 1840|回复: 0

[经验分享] spring mvc集成shiro的web.xml配置详解

[复制链接]

尚未签到

发表于 2017-3-3 08:35:09 | 显示全部楼层 |阅读模式
<?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>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-349451-1-1.html 上篇帖子: spring mvc集成shiro的web.xml配置详解 下篇帖子: activemq-5.13 在windows下部署应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表