Struts的基础问题.

来源:百度知道 编辑:UC知道 时间:2024/05/31 01:21:23
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

为什么<url-pattern>这个里面只有放*.do才能正常提交呢?我把它改成别的都失败是为什么?不会不能改吧?能改的话要怎么样改?
后面可以改,我更想知道为什么前面不能够改,我一改就出错!为什么
<url-pattern>ccc.do</url-pattern>
<html:form action="ccc.do">
~~~~~~~~~~~~~
*.app是所有的,为什么不能让它单独指向ccc.app?

建议在jsp中不要用struts的标签,这样不但把jsp与struts绑定在一起了,有写struts标签根本就不好使

不知道你了解servlet不,你在servlet中写控制器的时候,是根据表单传入的url进行解析,也即是解析“xxx.do", 得到xxx,然后转到相应的业务代码(servlet)

在struts中
web.xml文件:
你少看了两行
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
后面的自己看下(这里只谈论关键的)
还有你自己看到的:
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
上面的下面的<servlet-name>都是相同的,并且你还会发现<servlet-name>的值只有一个,就是"action",也就是说控制器只有一个

如果你把<url-pattern>的值改成"xxx.do",那么action对应的控制器类org.apache.struts.action.ActionServlet就只会解析包含xxx.do的url请求,比如"fsdfsdxxx.do", 但是如果一个请求中的url为:"abcx.do",控制器不会解析
404错误就出来了

*.do 中的do是随便修改的(比如,修改成app)。只要保持全局统一就可以了,

在你提交的form action的位置,action