假设web.xml中servlet的<url-pattern>为/servlet/test
1. 第一种方式:
我们一般在配置struts2的时候,web.xml文件中对struts2的<url-pattern>都会设置为/*,也就是说所有的请求都会经过struts2,那么只要经过struts2就必须得有action与之对应,否则就会报错。所以在前台jsp页面如果直接访问/xxx/servlet/test就会报错找不到action。
对于这种情况,我们只需要写一个action并在struts.xml文件中进行配置即可:
action为:
public class TestAction implements ActionSupport {
public String execute(){
return SUCCESS;
}
}
struts.xml中对该action进行配置即可:
<package name="test" namespace="/" extends="struts-default">
....
<action name="test" class="com.xxx.action.TestAction">
<result>/servlet/test</result><!--result配成servlet的url-pattern即可-->
</action>
....
</package>
然后前台jsp页面中访问方式改成/test.action即可(.action可以省略)
总结下:如果在web.xml使用 “/*” 处理请求,则servlet需要用一个action来转发该servlet自己的路径。
2. 第二种方式:
假设前台jsp页面的访问地址不想改变,也可以改变web.xml中的配置,原先struts2的<url-pattern>设置为/*会拦截所有的请求,包括访问servlet,现在可以将struts2的<url-pattern>改成 *.action,那么struts2会拦截所有后缀是 .action的请求,其他的就不会拦截了。所以这样的话,前台就可以直接访问/servlet/test了。不过访问struts2的url中必须都以 .action结尾,这样才能被struts2拦截到。
_____________________________________________________________________________________________________________________________________________________
-----乐于分享,共同进步!