spring和struts都是著名的开源框架,目前已成为企业级WEB开发的首选.Spring是一个轻量级(大小和系统开支的角度)的IoC和AOP容器.它力图简化J2EE开发即J2EE without EJB.而且作为帮助企业级开发的核心支柱,Spring为模型层(OR持久层:Hibernate、JDO、iBatis等)服务层(EJB、JNDI、WebService)以及表现层(Struts、JSF、Velocity)都提供了良好的支持和集成方案
下面我们就来整合spring和struts,以spring2.5整合struts1.2为例,不同的版本,可能整合方式有些不同,不过可以参考网上资料.首先列出整合的步骤:
1,分别导入spring2.5和struts1.2的Jar包(如查使用myeclipse可以自动添加)
2.建立jsp页面
3.建立业务层和Action类用来测试
4.配置applicationContext.xml,web.xml,struts-config.xml文件
5.启动tomcat,在IE地址栏输入http://localhost:8080/项目名/
一.导入spring2.5和struts1.2的Jar包
把spring2.5与struts1.2中分别的包导入后,还需要在spring中导入一个spring-webmvc-struts.jar包,这个包是用来整合的,我这里整合用的包名分别为:
struts1.2
antlr.jar
commons-beanutils.jar
commons-digester.jar
commons-fileupload.jar
commons-logging.jar
commons-validator.jar
jakarta-oro.jar
struts.jar
spring2.5
aspectjrt.jar
aspectjweaver.jar
cglib-nodep-2.1_3.jar
common-annotations.jar
commons-logging.jar
spring.jar
spring-webmvc-struts.jar(这个是关键包,少了就会报错)
二.建立jsp页面
建立一个登录的index.jsp页面:
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <html>
- <head>
- <title> 登录页面 </title>
- <link rel=stylesheet href="css/login.css" type="text/css">
- </head>
- <body>
- <h1 align="center">用户登录页面</h1>
- <hr>
- <div align="center">
- <form action="login.do" method="post">
- <table cellspacing=5 border=5 bodercolor=#ffaa00 >
- <tr><th colspan="3" align="center" bgcolor=#ffaa00>用户登录</th></tr>
- <tr>
- <th rowspan="3" background="images/2.jpg" style="width=90px"></th>
- <td>用户名:</td><td><input type="text" class="message" name="username"></td></tr>
- <tr><td>密 码:</td><td><input class="message" type="password" name="userpassword"></td></tr>
- <tr><td colspan="2" align="center"><input type="submit" value="登录"> <input type="reset" value="重置"></td></tr>
- </table>
- </form>
- </div>
- </body>
- </html>
接下来一个成功跳转页面succ.jsp和一个失败跳转页面failure.jsp:
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <html>
- <head>
- <title>Succsess</title>
- </head>
- <body>
- Succsess. <br>
- </body>
- </html>
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <html>
- <head>
- <title>Failure</title>
- </head>
- <body>
- Failure. <br>
- </body>
- </html>
三.建立各类
form类LoginActionForm.java:
- package myclass.from;
- import org.apache.struts.action.ActionForm;
- public class LoginActionForm extends ActionForm{
- public String username;
- public String userpassword;
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getUserpassword() {
- return userpassword;
- }
- public void setUserpassword(String userpassword) {
- this.userpassword = userpassword;
- }
- }
Action类LoginAction.java:
- package myclass.action;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import myclass.from.LoginActionForm;
- import myclass.service.LoginService;
- import org.apache.struts.action.Action;
- import org.apache.struts.action.ActionForm;
- import org.apache.struts.action.ActionForward;
- import org.apache.struts.action.ActionMapping;
- public class LoginAction extends Action{
- private LoginService loginService;
- public ActionForward execute(
- ActionMapping mapping,
- ActionForm form,
- HttpServletRequest request,
- HttpServletResponse response)
- throws Exception {
- LoginActionForm laf=(LoginActionForm)form;
- System.out.println(laf.getUsername()+"----"+laf.getUserpassword());
- String path="";
- //调用业务层的方法
- this.getLoginService().login(laf.getUsername(), laf.getUserpassword());
- path="succ";
- return mapping.findForward(path);
- }
- public LoginService getLoginService() {
- return loginService;
- }
- public void setLoginService(LoginService loginService) {
- this.loginService = loginService;
- }
- }
业务层接口LoginService.java:
- public interface LoginService {
- public void login(String username,String userpassword);
- }
业务层实现类LoginServiceImp.java:
- package myclass.service.impl;
- import myclass.service.LoginService;
- public class LoginServiceImp implements LoginService{
- public void login(String username, String userpassword) {
- System.out.println("欢迎你来到业务层:"+username+"---"+userpassword);
- }
- }
四.配置applicationContext.xml,web.xml,struts-config.xml文件
这个是整个的关键,不过spring整合struts还算是容易,如果还整合了hibernate就会复杂很多.
首先在web.xml中加载spring框架:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <!--加载spring框架 -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:application*.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>
- <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>
- <welcome-file-list>
- <welcome-file>index.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
这是其中一种方法,也可以在struts-config.xml中使用插件的方法加载spring框架,任选其一,具体见struts-config.xml,在这里还要加入controller节点把本文件中的action委托给spring框架管理,如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE struts-config PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
- "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
- <struts-config>
- <!-- 配置ActionForm -->
- <form-beans>
- <form-bean name="loginform" type="myclass.from.LoginActionForm"></form-bean>
- </form-beans>
- <!-- 配置登录 -->
- <action-mappings>
- <action path="/login" name="loginform" >
- <!-- 配置跳转 -->
- <forward name="succ" path="/succ.jsp"></forward>
- <forward name="failure" path="/failure.jsp"></forward>
- </action>
- </action-mappings>
- <!-- 把本文件中的action委托给spring框架管理 -->
- <controller>
- <set-property property="processorClass"
- value="org.springframework.web.struts.DelegatingRequestProcessor"/>
- </controller>
- <!-- 加载spring框架
- <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
- <set-property property="contextConfigLocation"
- value="classpath:applicationContext.xml"/>
- </plug-in>
- -->
- </struts-config>
现在,就可以使用applicationContext.xml来管理业务bean和action了:
- <?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:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-2.5.xsd">
- <!-- 启动注解
- <context:annotation-config></context:annotation-config>
- -->
- <bean id="loginServiceImp" class="myclass.service.impl.LoginServiceImp">
- </bean>
- <bean name="/login" class="myclass.action.LoginAction">
- <property name="loginService" ref="loginServiceImp"></property>
- </bean>
- </beans>
action bean name="/login"中不能使用id,只能用name,不然会错,并且name与action path="/login"相同,通过这个来连接action.到这里就整合完了,接下来启动tomcat可以测试了.