首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

spring(二):struts与spring整合

2012-10-10 
spring(2):struts与spring整合本节主讲将struts与spring进行整合:1,新建一个WEB工程:工程名为strutsspring

spring(2):struts与spring整合

本节主讲将struts与spring进行整合:

1,新建一个WEB工程:工程名为strutsspring,在其src目录上新建struts.xml配置文件

???? 将struts相关的7个JAR包,拷至工程的WebRoot/Web-inf/lib目录下

???? spring(二):struts与spring整合

2,配置 Web.xml文件,加上struts的过滤

<?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"><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>

?

经过以上两步配置,此工程已是标准的struts工程。

?

?修改Tomcat/conf/server.xml配置文件,加上

<Context path="/strutsspring" docBase="E:\workspace\strutsspring\WebRoot" reloadable="true"/>

?3,将spring相关的JAR包导入工程,将applicationContext.xml文件放入工程的web-inf目录下

4,将struts与spring整合:

??? 将struts lib目录下的struts2-spring-plugin-2.0.14.jar包复制到工程中,此包中只有一个class文件。

??? 修改web.xml文件,加入监听器,如下:

<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

??? 启动tomcat服务器,启用完成。

?

?例子:下面用一个登录的例子,结合struts与spring开发

登录页面login.jsp, 要求输入用户名与密码

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%><%@ taglib prefix ="s" uri="/struts-tags"%><html>  <head>  </head>  <body>    <s:form action="login">    <s:textfield name="username" size="20" label="username"></s:textfield>    <s:password name="password" size="20" label="password"></s:password>    <s:submit></s:submit>    </s:form>  </body></html>

?

?定义一个接口,isLogin方法用于判断用户名与密码是否正确

package com.test.service;public interface LoginService {public boolean isLogin(String username,String password);}

?

实现类,当username为hello,password为world时,返回true,否则返回false

package com.test.service.impl;import com.test.service.LoginService;/* * 该类完成业务处理,向外暴露的是LoginService接口 */public class LoginServiceImpl implements LoginService {public boolean isLogin(String username, String password) {if("hello".equals(username) && "world".equals(password)){return true;}return false;}}

?

?

action类中不处理业务逻辑,逻辑由LoginService 接口负责,其对象由spring负责生成

package com.test.action;import com.opensymphony.xwork2.ActionSupport;import com.test.service.LoginService;public class LoginAction extends ActionSupport {private String username;private String password;private LoginService loginService;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public LoginService getLoginService() {return loginService;}public void setLoginService(LoginService loginService) {this.loginService = loginService;}public void setPassword(String password) {this.password = password;}//下面这个loginService由spring生成public String execute() throws Exception {if(loginService.isLogin(username, password)){return "success";}else{return "error";}}}

?

struts配置文件,此文件中不再负责生成action,改为由spring配置文件生成,class对应的值,必须对应spring配置文件中的bean id

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="strutsspring" extends="struts-default"><!--下面这个class中的loginAction对应的是spring配置文件applicationContext.xml文件中声明的loginAction bean --><!--现在由spring负责生成action--><action name="login" name="code"><?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" scope="singleton"></bean><bean id="loginAction" scope="prototype"><property name="loginService" ref="loginService"></property></bean></beans>

?其中scope配置是重点!其范围如下图所示

?

spring(二):struts与spring整合

一般无状态类应使用singleton,而action则建议使用request或prototype

无状态类是指只有方法,没有属性的类。

热点排行