在struts2的基础上使用Spring,
1、首先需要导入Spring相关的包,在pom.xml中加入以下内容:
<!-- spring依赖包 --> <!-- spring3 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.1.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.1.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.1.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>3.1.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.1.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>3.1.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>3.1.2.RELEASE</version> </dependency>
2、使用spring
(1)使用spring:首先在web.xml中配置spring相关项,第一项设置spring配置文件路径,后面配置spring的监听,当采用spring创建实例方式时,将按照配置文件中类的依赖关系进行依赖注入。
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:contextConfig.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
(2)配置类的依赖关系:创建contextConfig.xml文件,将文件放置在上面指定的路径下,文件内容如下(loginAction依赖于loginService,其中loginService用来做逻辑判断是否登录成功):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="loginService" class="com.mz.service.LoginServiceImpl"> </bean> <bean id="loginAction" class="com.mz.action.LoginAction"> <property name="loginService" > <ref local="loginService"/> </property> </bean> </beans>
(3)创建ILoginService接口和创建LoginServiceImpl类:类实现接口,在LoginAction中包含ILoginService类型的属性,通过set方法设置属性所指向的具体的对象(依赖注入),这样可以通过修改配置文件修改具体实现:
LoginAction类:
package com.mz.action; import com.mz.service.ILoginService; import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.ServletActionContext; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; /** * Created by hadoop on 15-9-7. */ public class LoginAction extends ActionSupport { private static final long serialVersionUID = 1L; private ILoginService loginService; public void setLoginService(ILoginService loginService) { this.loginService = loginService; } public ILoginService getLoginService(){ return this.loginService; } public String execute(){ return SUCCESS; } public String login() throws IOException { try { HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=utf-8"); String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println(username + ":" + password); boolean login = loginService.userLogin(username, password); if(login){ response.getWriter().write("login success!"); response.getWriter().flush(); return SUCCESS; } else { response.getWriter().write("login failed!"); response.getWriter().flush(); return "login"; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); return "login"; } } }
ILoginService接口:
package com.mz.service; /** * Created by hadoop on 15-9-8. */ public interface ILoginService { boolean userLogin(String username, String password); }
LoginServiceImple类:
package com.mz.service; import com.mz.dao.IUserDao; /** * Created by hadoop on 15-9-8. */ public class LoginServiceImpl implements ILoginService { public boolean userLogin(String username, String password) { if("admin".equals(username)&&"123456".equals(password)){ return true; }else{ return false; } } }
(这个时候rebuild工程,发现网页访问时报错,nullPointException,因为在前面的配置中action类是通过struts2生成的实例,它不会使用依赖注入创建loginService)
(4)让struts2按照spring的规则来生成对象:修改strut.xml配置文件,将class换成Spring配置文件中的id
<package name="front" namespace="/" extends="struts-default"> <action name="login" class="loginAction" method="login"> <result name="success">/index.jsp</result> <result name="login">/login.jsp</result> </action> </package>
(5)最后还需要使用struts2与Spring结合的包,所以在pom.xml中导入包,注意版本对应,否在可能出错:
<!-- spring3和struts2结合包 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.4.1</version> </dependency>
然后告诉struts2需要使用Spring,在Struts.xml中加入
<constant name="struts.objectFactory" value="spring" />
这个时候struts2碰到loginAction时会去采用Spring的规则生成对象,rebuild工程,测试一般可以通过。
相关内容
(1)Web开发:Struts2 Spring Hibernate整合(一)——Struts2的使用
相关推荐
比较流行的一本书,在公司内很受欢迎 比较实用 下半部分,需与上半部分放在一起解压。
以下章节源码[03] [04] [05] [08] [10] [11] [12] [13] [14] [15] [16]
精通Eclipse整合Web开发——Struts,Spring,Hibernate,JBPM 图书馆下载的,很不容易。 不是很清晰,如果介意的,请不要下载,不要拍砖。 总共有三部分。
轻量级 J2EE 企业应用实战:Struts+Spring+Hibernate 整合开发
- **分层架构**:系统采用经典的三层架构,包括表示层(Web层,使用Struts2)、业务逻辑层(Service层,使用Spring)和数据访问层(DAO层,使用Hibernate)。每个层都有明确的职责,使得代码结构清晰,易于维护。 ...
精通Eclipse整合Web开发——Struts,Spring,Hibernate,JBPM 图书馆下载的,不是很清晰,如果介意的,请不要下载,不要拍砖。 总共有三部分。
精通Java EE:Eclipse Struts2 Hibernate Spring整合应用案例代码和数据库压缩包6
如何整合这4个开源框架进行J2EE开发,如何基于MyEclipseIDE进行开发,J2EE开发的基础和基础环境搭配,Struts、Hibernate、Spring、Eclipse四个框架的使用,如何整合Struts+Hibernate+Spring+Eclipse框架。...
Java Web整合开发实战--基于Struts 2+Hibernate+Spring.pdf 1章 Web的工作机制 2章 搭建Java Web开发环境 3章 JSP及其相关技术 2篇 表现层框架Struts技术 4章 Struts快速上手 5章 解密Struts之核心文件 6章 ...
收集的Java Web整合开发实战:基于Struts 2+Hibernate+Spring-源代码,看到其他人下载币要的太多,给大家分享一下。 不是很全,但可以拿来参考了。 由于大小限制,还有另外一个包······
学习Spring Struts Hibernate 整合开发必看的书
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2作为MVC框架处理请求和展示,Spring提供依赖注入和事务管理,Hibernate则作为ORM框架处理数据库操作。将这三个框架整合在...
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
J2EE 企业应用实战:Struts Spring Hibernate 整合开发.part2
J2EE 企业应用实战:Struts Spring Hibernate 整合开发 文件过大``分2部分 此为Part2
struts2 spring hibernate 整合过程 希望能对你有帮助,谢谢