最近做一个SSH项目,注册的时候要验证用户输入的用户名是否已经存在(数据库里已经有了)。使用ajax发送请求到servlet处理,但是总是找不到servlet。查了很多东西终于明白了一点。
整合SSH后,我们在web.xml中设置struts过滤器。
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
如果像上面这样设置的话,
struts会把所有的请求都拦截下来(它默认所有的请求都是.action),但是servlet并不会在struts.xml中注册。所以struts2将它拦截下来了,但是,却不知道要转给哪个action。
我们想让部分请求被拦截下来,通过action来处理,但是比如这里对servlet的请求我们不希望被拦截下来。如果如此,像下面这样对web.xml中的struts过滤器进行设置。
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
*.do
struts2
*.jsp
struts2
*.action
一般来说,我们的请求.action、.do、.jsp这三种类型就可以了,其他类型我暂时没有使用到,如果有,再添加同样形式的上去,理论上,这样做的话,所有action请求,都最好显式地加上.action后缀,比如form表单里的action属性的值最好写“#.action",而不要写”#“。
已经过测试,成功地请求到了servlet,解决了我的问题,希望对大家有帮助。