刚刚学struts,就开始学着做小例子。
我用eclipse创建了一个WEB工程,按书上说的把struts的包都放入相应的文件下(如jar文件入到WEB-INF/lib下),classpath也设好了。web.xml设置如下:<servlet>
<servlet-name>actionSevlet</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>问题是我用eclipse里面运行login.jsp,怎么都说我找不到这个资源,其它页面也都运行不了。如果注释掉servlet-mapping,login.jsp和其它页面就正常运行。好像之前有几次login.jsp可以运行,提交是login.do,可是ActionServlet不拦截请求,说找不到login.do资源。这个ActionServlet不是通过之前加截web.xml来启动,然后自动拦截请求的么。说长了点,我的问题是运行不了login.jsp,如果运行成功,要么说login.do找不到。本着学习的态度,手动加入struts,希望不要有人说我怎么不用自动加入的。
我用eclipse创建了一个WEB工程,按书上说的把struts的包都放入相应的文件下(如jar文件入到WEB-INF/lib下),classpath也设好了。web.xml设置如下:<servlet>
<servlet-name>actionSevlet</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>actionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>问题是我用eclipse里面运行login.jsp,怎么都说我找不到这个资源,其它页面也都运行不了。如果注释掉servlet-mapping,login.jsp和其它页面就正常运行。好像之前有几次login.jsp可以运行,提交是login.do,可是ActionServlet不拦截请求,说找不到login.do资源。这个ActionServlet不是通过之前加截web.xml来启动,然后自动拦截请求的么。说长了点,我的问题是运行不了login.jsp,如果运行成功,要么说login.do找不到。本着学习的态度,手动加入struts,希望不要有人说我怎么不用自动加入的。
例子:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><struts-config>
<data-sources />
<form-beans ><!-- form-beans中配formbean,type指定到具体的类 -->
<form-bean name="loginTable" type="com.ht.struts.form.LoginTableForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action path="/createLogin"
name="loginTable" <!-- 这里的name要和上面的formbean中的name保持一致 -->
type="com.ht.struts.action.CreateLoginAction">
<!-- CreateLoginAction 是继承Action的 -->
<forward name="error" path="/error.jsp"></forward>
<!--通过CreateLoginAction中的execute方法的返回值mapping.findForward("success")来判断跳转的那个页面 -->
<forward name="success" path="/success.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>
<form-beans>
<form-bean name="LoginForm" type="src.strutsText.LoginForm"/>
</form-beans>
<global-forwards>
<forward name="error" path="/WEB-INF/error.jsp"/>
</global-forwards>
<action-mappings>
<action path="/login" type="src.strutsText.LoginAction" name="LoginForm">
<forward name="welcome" path="/WEB-INF/welcome.jsp"/>
<forward name="error" path="/WEB-INF/error.jsp"/>
<forward name="input" path="/WEB-INF/login.jsp"/>
</action>
</action-mappings>
</struts-config>问题是我注释web.xml里面的
<servlet-mapping>
<servlet-name> actionServlet </servlet-name>
<url-pattern> *.do </url-pattern>
</servlet-mapping>
运行login.jsp就没问题,加入就有说没这个页面。这是什么问题呢?
与struts-config.xml、和action和jsp有关系
web.xml是我手写的,不是自动生成的。
那你看我struts-config.xml有问题么?
<servlet-name> actionSevlet </servlet-name>
<servlet-class> org.apache.struts.action.ActionServlet </servlet-class>
<init-param>
<param-name> config </param-name>
<param-value> /WEB-INF/struts-config.xml </param-value>
</init-param>
<load-on-startup> 2 </load-on-startup>
</servlet>
<servlet-mapping>
<!--你看你这里的 servlet-name和上门的servlet-name相同么,你把这段复制过去就可以用了,你的是影射名称写错了-->
<servlet-name> actionSevlet </servlet-name>
<url-pattern> *.do </url-pattern>
</servlet-mapping>
</web-app>