1、spring和struts依赖库配置
* 配置struts
1--拷贝struts类库和jstl类库
2--修改web.xml文件来配置ActionServlet
3--提供struts-config.xml文件
4--提供国际化资源文件
* 配置spring
1--拷贝spring类库(注意spring-webmvc-struts.jar为必要的包,在注入struts action时需要)
2--提供spring配置文件
2、在web.xml 中使用ContextLoaderListener
<!- - applicationContext.xml放置在/WEB-INF/classes/目录下的配置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param> <!- - applicationContext.xml放置在src目录下的配置 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!- - 以下为固定的配置 设置spring的监听 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> |
3、将struts-config.xml文件中的action中的type改为org.springframework.web.struts.DelegatingActionProxy,并增加<controller><controller>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="LoginForm" type="com.demo.form.LoginForm"></form-bean> </form-beans> <action-mappings> <action path="/login" name="LoginForm" type="org.springframework.web.struts.DelegatingActionProxy"> <forward name="success" path="/success.jsp"></forward> <forward name="false" path="/false.jsp"></forward> </action> </action-mappings> <controller> <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/> </controller> <message-resources parameter="com.demo.struts.ApplicationResources" /> </struts-config>
|
4、struts中的action在spring配置文件applicationContext.xml的配置:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean name="userManager" class="com.demo.impl.UserManagerImpl"></bean> <bean name="/login" class="com.demo.action.LoginAction"> <property name="userManager" ref="userManager"></property> </bean> </beans> |
此处action的bean中的name属性(“/login”)必须与struts-config.xml中action的path属性一致
5、在action中设置业务实现类中的get、set方法即可
package com.demo.action;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping;
import com.demo.dao.UserManager; import com.demo.form.LoginForm;
public class LoginAction extends Action{ private UserManager userManager;
public UserManager getUserManager() { return userManager; }
public void setUserManager(UserManager userManager) { this.userManager = userManager; } @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginForm loginForm=(LoginForm)form; System.out.println(loginForm.getUser().getPassword()); userManager.login(); request.setAttribute("user", loginForm.getUser().getName()); request.setAttribute("str", request.getParameter("str")); return mapping.findForward("success"); } } |