我一切运行都正常,做了一个注册和登录的功能也都能使用,但是后来发现,我做的DispatchAction根本就没有用,因为在action中做的操作一点效果都没有。
程序根本就没有执行我的action啊!
这是为什么呢?
相关配置文件如下:
regedit.jsp关键代码<html:form action="whykadmin/admin.do" method="post">
用户名:<html:text property="userid"></html:text><br>
姓名:<html:text property="username"></html:text><br>
密码:<html:password property="password"></html:password><br>
<input type="hidden" name="status" value="adminregister">
<input type="hidden" name="type" value="1">
<html:submit value="注册"></html:submit>
<html:reset value="重填"></html:reset>
</html:form>
Action代码:public class AdminAction extends DispatchAction {
private IAdminDAO iadmindao;
public ActionForward adminregister(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
AdminForm adminForm = (AdminForm) form;
Admin admin = new Admin();
MD5Code md5 = new MD5Code();
admin.setUserid(adminForm.getUserid());
admin.setUsername(adminForm.getUsername());
admin.setPassword(md5.getMD5ofStr(adminForm.getPassword()));
try {
this.iadmindao.register(admin);
return mapping.findForward("registersucc");
} catch (Exception e) {
e.printStackTrace();
return mapping.findForward("registerfail");
}
}
}
applicationContext.xml关键代码:<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="iadmindao" class="net.hrmis.lsg.dao.IAdminDAO"
abstract="true">
</bean>
<bean id="iadmindaoimpl"
class="net.hrmis.lsg.dao.impl.IAdminDAOImpl" parent="iadmindao">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate" />
</property>
</bean>
<bean name="/whykadmin/admin"
class="net.hrmis.lsg.struts.action.AdminAction">
<property name="iadmindao">
<ref bean="iadmindaoimpl" />
</property>
</bean>
struts-config.xml:<struts-config>
<form-beans >
<form-bean name="adminForm" type="net.hrmis.lsg.struts.form.AdminForm" />
</form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="adminForm"
input="/whykadmin/errors.jsp"
name="adminForm"
parameter="status"
path="/whykadmin/admin"
scope="request"
type="net.hrmis.lsg.struts.action.AdminAction">
<forward name="registersucc" path="/whykadmin/admin_list.jsp"></forward>
<forward name="registerfail" path="/whykadmin/admin_register.jsp"></forward>
<forward name="loginsucc" path="/whykadmin/AdminIndex.jsp"></forward>
<forward name="loginfail" path="/whykadmin/index.jsp"></forward>
</action>
</action-mappings>
<controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>
<message-resources
parameter="net.hrmis.lsg.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
</struts-config>
web.xml:<servlet>
<servlet-name>action</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>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
问题就是Action文件根本就没执行…………
程序根本就没有执行我的action啊!
这是为什么呢?
相关配置文件如下:
regedit.jsp关键代码<html:form action="whykadmin/admin.do" method="post">
用户名:<html:text property="userid"></html:text><br>
姓名:<html:text property="username"></html:text><br>
密码:<html:password property="password"></html:password><br>
<input type="hidden" name="status" value="adminregister">
<input type="hidden" name="type" value="1">
<html:submit value="注册"></html:submit>
<html:reset value="重填"></html:reset>
</html:form>
Action代码:public class AdminAction extends DispatchAction {
private IAdminDAO iadmindao;
public ActionForward adminregister(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
AdminForm adminForm = (AdminForm) form;
Admin admin = new Admin();
MD5Code md5 = new MD5Code();
admin.setUserid(adminForm.getUserid());
admin.setUsername(adminForm.getUsername());
admin.setPassword(md5.getMD5ofStr(adminForm.getPassword()));
try {
this.iadmindao.register(admin);
return mapping.findForward("registersucc");
} catch (Exception e) {
e.printStackTrace();
return mapping.findForward("registerfail");
}
}
}
applicationContext.xml关键代码:<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="iadmindao" class="net.hrmis.lsg.dao.IAdminDAO"
abstract="true">
</bean>
<bean id="iadmindaoimpl"
class="net.hrmis.lsg.dao.impl.IAdminDAOImpl" parent="iadmindao">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate" />
</property>
</bean>
<bean name="/whykadmin/admin"
class="net.hrmis.lsg.struts.action.AdminAction">
<property name="iadmindao">
<ref bean="iadmindaoimpl" />
</property>
</bean>
struts-config.xml:<struts-config>
<form-beans >
<form-bean name="adminForm" type="net.hrmis.lsg.struts.form.AdminForm" />
</form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="adminForm"
input="/whykadmin/errors.jsp"
name="adminForm"
parameter="status"
path="/whykadmin/admin"
scope="request"
type="net.hrmis.lsg.struts.action.AdminAction">
<forward name="registersucc" path="/whykadmin/admin_list.jsp"></forward>
<forward name="registerfail" path="/whykadmin/admin_register.jsp"></forward>
<forward name="loginsucc" path="/whykadmin/AdminIndex.jsp"></forward>
<forward name="loginfail" path="/whykadmin/index.jsp"></forward>
</action>
</action-mappings>
<controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>
<message-resources
parameter="net.hrmis.lsg.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
</struts-config>
web.xml:<servlet>
<servlet-name>action</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>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
问题就是Action文件根本就没执行…………
这不是有点矛盾吗
path="/role"
type="org.springframework.web.struts.DelegatingActionProxy"
name="CRRoleManageForm"
scope="request"
parameter="method"
>
<forward name="index" path="/CRRoleManage/CRRoleView01.jsp"></forward>
<forward name="add_input" path="/CRRoleManage/CRRoleAdd01.jsp"></forward>
</action>
如:parameter="method"
那么你在发送请求的JSP页面要加上<html:form action="whykadmin/admin.do?method=adminregister" method="post">
这才才能通知DispatchAction要执行那个具体的方法。
还有DispatchAction中的方法名一定要改哦
我曾今也这样过啊
这个有setter方法么??没有的话加上看看
怀疑跟导入的jar包有没有关系呢?struts的jar包!