如题,我想问经验人士在做SSH或者SSI项目的时候页面jsp在项目的摆放层次问题,我没做过SSH和SSI项目,所以希望有经验的认识可以指导指导,。     由于不能上传图片,我只好用文字描述,我现在的jsp包的摆放是WebRoot下admin,admin下是各action的jsp包,意思为admin下role、right,user等jsp包,     原本是WebRoot下是role、right、user等jsp包。     我计划是WebRoot下是admin,admin下是个模块的jsp包,如系统管理的jsp包(system),效果为admin下system,在system就是系统管理应有的action的jsp包如role、right,user等,效果为system下的role、right,user等。
     现在暂时action只有5个,所以项目不是很复杂,但日后可能有10几个以上,所以我计划是用第三钟方式的摆放方式的,但第三种方法在struts2.xml配置使用起来发现有很大的难度,而第一种方式暂时是这样放着,第一种是第三种的过渡。    由于我没做过SSH、SSI项目,而以前做的项目都比较简单,只要将页面全部放在WebRoot之下的admin里面就可以了,而且现在做的项目是动态生成权限,所以对于jsp包的摆放我没什么经验,希望有经验人士可以帮助我。    还有一个问题是,我配置了一个过滤器类,过滤所有的*.jsp和*.action,现在jsp页面是必须经过过滤器类,但我在url地址栏上输入action,程序却没经过过滤器类,为什么呢?我在web.xml里已经写了 <filter-mapping>
<filter-name>authorizeFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>authorizeFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>   
但为什么还是不会经过这个过滤器类呢?

解决方案 »

  1.   


    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter> <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping> <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
      

  2.   


    authorizeFilter是我编写的一个过滤器,而配置struts2的filter,我是直接/*,这样应该没错吧
      

  3.   

    可以将图片上传到CSDN相册中 然后在帖子里引用
    这种事情怎么方便怎么摆咯 不用太纠结
      

  4.   

    <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>    <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>*.do</url-pattern>
        </filter-mapping>    
      

  5.   


    进入你的filter没?没的话直接用*试试。
      

  6.   


    我问的不是我的url有没有进入struts2自己的filter,我问的是我在地址栏输入action为什么不进入我自定义的过滤器类authorizeFilter,上面我捻出来的是我自定义过滤器的配置啊
      

  7.   

     我假如输入a/a/a/user_del.action  你在xml写
      <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>*.action</url-pattern>
        </filter-mapping>
    直接输入肯定能拦截到啊!!* 匹配。。如果还不行你就拦截所以的 *
      

  8.   


    我知道这样是可以拦截到,按事实上不行啊,我试过将tomcat里面的项目删了,又试过重启IDE,但我自定义的过滤器authorizeFilter还是没有将其拦截下来
      

  9.   

    能把你全部的WEB.XML代码贴出来吗?
      

  10.   

    authorizeFilter代码发出来看看。
      

  11.   


    <?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">

    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    <!-- default: /WEB-INF/applicationContext.xml -->
    </listener> <context-param>
    <param-name>contextConfigLocation</param-name>
    <!-- <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>  -->
    <param-value>classpath:applicationContext.xml</param-value>
    </context-param>


    <filter>
    <filter-name>encodingFilter</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>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter> <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping> <filter>
    <filter-name>authorizeFilter</filter-name>
    <filter-class>com.devt2.util.AuthorizeFilter</filter-class>
    <init-param>
    <param-name>exclude</param-name>
    <param-value>login.jsp,Login!Login.do</param-value>
    </init-param>
    <init-param>
    <param-name>input</param-name>
    <param-value>/login.jsp</param-value>
    </init-param>
    </filter>

    <filter-mapping>
    <filter-name>authorizeFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>

    <filter-mapping>
    <filter-name>authorizeFilter</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping>
      <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
      

  12.   

    我手动在地址栏讲原本actionName!method.action改成*.action那就能进入authorizeFilter了
      

  13.   

    真是伤不起啊,我用的是SSI项目,我用的是注解,假如我有个action叫AdminAction,利用Spring-struts插件,默认装载后为action名字成为admin,我用注解将其修改成为Admin装载,就就是因为这个原因,所以authorizeFilter过滤器一直无法捕获地址栏url的动作,这是为什么呢,求原理,我将原本默认加载为admin修改成Admin原因是我想在struts.xml中加入通配符,使xml配置没那么复杂,但我不知道经验人士在做S2SH项目的时候会用通配符配置项目吗?