从网页隐藏JSP扩展

从网页隐藏JSP扩展,jsp,tomcat,jakarta-ee,struts2,Jsp,Tomcat,Jakarta Ee,Struts2,我正在开发一个web应用程序(J2EE、Struts2、JSP、Tomcat) 我想从网页中隐藏.jsp扩展名 下面是my web.xml的一些内容: <filter> <filter-name>STSDispatcher</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher

我正在开发一个web应用程序(J2EE、Struts2、JSP、Tomcat) 我想从网页中隐藏.jsp扩展名

下面是my 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>

STSDispatcher
org.apache.struts2.dispatcher.FilterDispatcher
STSDispatcher
/*
Login.jsp
我搜索了一下,找到了这个解决方案:

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

美孚
myJSPfile.jsp
美孚
/主要
我试过下面这样做,但没有成功:

例如,我有“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>

警觉的
/alert.jsp
警觉的
/警觉的
但我有一个错误: “没有为命名空间/和操作名称警报映射的操作。-[未知位置]”

我该怎么办


提前感谢。

这种方法应该是有效的。另一种选择是编辑htaccess文件,添加此

RewriteEngine On
RewriteRule ^([0-9a-zA-Z]+)$  $1.jsp
执行此操作后,任何xyz.jsp都将是xyz。事实上,我在几天前发现了这种方法

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

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

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

ForwardToJspServlet
*.第页


ForwardToJspServlet
/页数/*
servlet的逻辑是将请求的URL转换为JSP的路径,然后转发


比如说,,用户请求URL/yourApp/documents/documentAdd.page,您在/WEB-INF/JSP/documents/documentAdd.JSP下转发到JSP,我想您会收到错误,因为struts2过滤器会截获所有发送到服务器的请求,并尝试在您的操作中查找映射,但由于
/alert
实际上指向一个servlet,您会看到错误。
解决方案是在struts配置文件中设置映射,如:

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

/alert.jsp

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

如果他没有Apache web服务器,该怎么办?surampudi:谢谢,伙计,但是这个“.htaccess”在哪里?!我在eclipse ide中使用Tomcat6+struts2,我想这个错误与所有URL的过滤器映射有关(
/*
)。对于某些URS,应用程序可以使用Struts以外的东西,一个好的做法是为Struts操作使用模式,如
*。执行
/actions/*
,这样,Struts就不会选择不遵循模式的URL(可能会导致错误)。圣母啊!它工作得很好,但是在我的登录页面(欢迎文件)中,当我使用该页面定义规则的方法时,我丢失了一些图像!!!!!!为什么?是的,我得到了这个解决方案,我想把它贴在这里,但你让我更容易;)谢谢你,伙计。
<action name="alert">
    <result>/alert.jsp</result>
</action>