从网页隐藏JSP扩展

时间:2011-06-20 06:47:56

标签: jsp tomcat java-ee struts2

开发Web应用程序(J2EE,Struts2,JSP,Tomcat) 我想隐藏网页上的.jsp扩展名。

这是我的web.xml的一部分:

     <filter>
         <filter-name>STSDispatcher</filter-name>
         <filter-class>
           org.apache.struts2.dispatcher.FilterDispatcher
         </filter-class>
     </filter>

     <filter-mapping>
         <filter-name>STSDispatcher</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>

     <welcome-file-list>
         <welcome-file>Login.jsp</welcome-file>
     </welcome-file-list>

我用Google搜索并找到了这个解决方案:

    <servlet>  
         <servlet-name>myFoo</servlet-name>  
         <jsp-file>myJSPfile.jsp</jsp-file>  
    </servlet>  
    <servlet-mapping>  
         <servlet-name>myFoo</servlet-name>  
         <url-pattern>/main</url-pattern>  
    </servlet-mapping> 

我在下面尝试了这个,但是没有用:

例如我有“ alert.jsp ”,这是我的web.xml:

<servlet>
    <servlet-name>alert</servlet-name>
    <jsp-file>/alert.jsp</jsp-file>
 </servlet> 

 <servlet-mapping>
     <servlet-name>alert</servlet-name>
     <url-pattern>/alert</url-pattern>
 </servlet-mapping>

但是我收到了这个错误: “没有针对命名空间/操作名称警报映射的操作。 - [未知位置]”

我该怎么办?

提前致谢。

4 个答案:

答案 0 :(得分:4)

您可以将带有JSP的目录结构放在WEB-INF中,然后使用servlet根据请求的URL转发到JSP。

servlet将映射到通配符模式,如:

<servlet-mapping>
  <servlet-name>ForwardToJspServlet</servlet-name>
  <url-pattern>*.page</url-pattern>
</servlet-mapping>

<servlet-mapping>
  <servlet-name>ForwardToJspServlet</servlet-name>
  <url-pattern>/pages/*</url-pattern>
</servlet-mapping>

并且servlet的逻辑将把请求的URL转换为JSP的路径然后转发。

例如,用户请求URL /yourApp/documents/documentAdd.page ,然后转到 /WEB-INF/JSP/documents/documentAdd.jsp

答案 1 :(得分:2)

答案 2 :(得分:2)

我认为你得到了错误,因为你的struts2过滤器拦截了所有进入服务器的请求,并试图在你的行动中找到一个映射,但是因为/alert实际指向一个servlet,你会看到错误。
解决方案是在struts配置文件中使用映射,如:

<action name="alert">
    <result>/alert.jsp</result>
</action>

这样,当您请求/alert时,您将获得没有扩展名的页面(您的操作名称)。

答案 3 :(得分:0)

该方法应该可行。其他选择是编辑htaccess文件,添加此

RewriteEngine On
RewriteRule ^([0-9a-zA-Z]+)$  $1.jsp

执行此操作后,任何xyz.jsp都是xyz。几天前我才发现这种方法 How to hide the .jsp extension in my web server urls