众所周知,有了struts2我们没有必要再去写servlet了,但是不排除有些项目中还是需要用到servlet,下面就如何在struts2中使用servlet做一总结。
struts.xml中对该action进行配置即可:
然后前台jsp页面中访问方式改成/test.action即可(.action可以省略)
假设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;
- }
- }
- <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>
总结下:如果在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拦截到。