快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和记娱h188下载app手机版:【J2EE架构师】22、万能框架spring(四)spring整合struts2实例BR3.1 延用原有的myssh工程中的pom.xml文件BR3.2 去除所有的struts1.3的依赖关系



一、媒介

SSH有了,现在我们要把我们的struts层从原本的1.3调换成struts2.x,引入了struts2.0后我们会发觉我们的代码和框架的变更照样不小的

二、Struts2的好处

1)在struts2的措施里,统统变量是线程安然的,而原有的struts1不是的;

2)在struts2中假如你声清楚明了如下这样的代码:

privater String studentName=””;

public void setStudentName(String studentName){

this.studentName = studentName;

}

public String getStudentName(){

return this.studentName;

}

那么当你对这个studentName进行符值后,不必要再把它用request.setAttribute这样的形式把值带到页面中去了,相称于你可以省去在request中往返的setAttribute{…}getAttribute{…}的操作(无意和记娱h188下载app手机版偶尔因为忘怀把一个listset 到request中去,常常导致一个页面便是不显示列表,对吧?这样的事可以被极大年夜程度上避免掉落)。

3)更富厚且描述简单的页面标签,可以直接支持将一个Object和页面的进行绑定,如:

我在后台假如有一个StudentVO,这个StudentVO如下描述:

private String studentNo = "";

private String studentName = "";

public String getStudentNo() {

return studentNo;

}

public void setStudentNo(String studentNo) {

this.studentNo = studentNo;

}

public String getStudentName() {

return studentName;

}

public void setStudentName(String studentName) {

this.studentName = studentName;

}

于是我在前台jsp里可以直接这样应用我的标签和我这个VO中的某个字段进行绑定:

s:textfield name="studentVO.studentName" size="24" maxlength="25"/>

4)原有在struts1中的formbean彻底消掉,去而代之的是应用VO工具,一个strutsaction便是一个通俗的类,只是它extendsActionSupport而己。

5)优越的注入机制,连session,request, response都可以注入了,是以你的一个action措施便是一个通俗类措施,这样做的好处是极大年夜化将servlet与我们的action进行解耦合。试想假如是原有的struts1的action措施,我现在要改成swing的actionPerform,你是不是要把原有的action措施包括传参都要进行重构啊?而现在有了struts2,因为连session,request, response都是被注入的,是以这个struts2的action措施可以直接重用。

Strtus2还有很多好处,这边不逐一枚举了,在struts2的官方文档和stepby step等书中具体有说,我们这边主要以实战为主,讲述struts2怎么和spring进行整合并且能够开拓我们的利用。

三、整合spring和struts2

我们照样用我们的Maven2。

Struts2变更很大年夜,它是一个险些被重写的框架,而不是一个“增强”的框架,它是承袭自xwrok的框架并且在全部框架中周全应用了filter机制。

对付我们的maven的pom.xml文件来说,这个lib库的篡改照样很大年夜的。

以致还会呈现一些莫名巧妙的差错而其缘故原由是由于lib库的版本纰谬或者是有冲突,为此笔者收拾了一份ssh2的所有必要的jar的mavenpom.xml文件。

虽然,我会在后面把这个xml文件完备列出来但照样盼望大年夜家在一开始随着我能够一步步走,对pom.xml文件和工程进行排错,这样你将对一些常用的框架的lib库有个对照认识的历程。

3.1 延用原有的myssh工程中的pom.xml文件

我们新建一个maven的web工程-myssh2,并将原有的myssh工程中的pom.xml文件拷入工程中。

请确保你应用的jdk版本为version1.6.x。

3.2 去除所有的struts1.和记娱h188下载app手机版3的依附关系

打开这个pom.xml文件,把下面这段所有的关于struts1.3的依附包整个去除。

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts-coreartifactId>

version>1.3.10version>

dependency>

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts-elartifactId>

version>1.3.10version>

dependency>

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts-extrasartifactId>

version>1.3.10version>

dependency>

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts-facesartifactId>

version>1.3.10version>

dependency>

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts-mailreader-daoartifactId>

version>1.3.10version>

dependency>

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts-scriptingartifactId>

version>1.3.10version>

dependency>

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts-taglibartifactId>

version>1.3.10version>

dependency>

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts-tilesartifactId>

version>1.3.10version>

dependency>

3.3 增添struts2的依附包

我们把原有的struts1.3的依附包去除后加入struts2的依附包

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts2-spring-pluginartifactId>

version>2.3.1.2version>

dependency>

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts2-coreartifactId>

version>2.3.1.2version>

dependency>

存盘后,此时maveneclipse插件会自动开始编译和下载相关的jar到你的本地maven的repository中,然后我们会发觉这个pom.xml文件掉足了:

抛一个sun.tool.jar没有找到的差错。

事理很简单,由于该tool.jar着实已经存在在我们本地安装的jdk的lib目录下了,是以我们不必要这个包,然则maven是自动依附的,你没有看到它在pom.xml文件中呈现不代表这层依附关系不存在。

是以我们必要做的是exclude这个包。

让我们在maveneclipse插件中打开这个pom.xml文件,切换到“DependencyHierarchy”视图,然后找到这个tool.jar文件,点左边这个list中的tools:1.5.0然后右键选“ExcludeMaven Artifact”。

选[ok]按钮然后存盘。

我们可以看到这个pom.xml文件统统正常了,没有血色的“叉叉”了,我们切换到pom.xml视图,可以看到它着实做了这么一件事(留意血色标粗的语句):

org.apache.struts

struts2-spring-plugin

2.3.1.2

org.apache.struts

struts2-core

2.3.1.2

tools

com.sun

然后:

1)我们把本来ssh工程中的resources目录下所有的器械拷到myssh2工程的resources目录下;

2)我们把本来的ssh工程的java文件拷过来;

3)我们把本来的ssh工程的src/main/webapp目录下的文件也拷贝过来;

4)不要忘了把WEB-INF/web.xml文件和index.jsp文件也拷过来啊!

1)我们把原有的org.sky.ssh.student.form和org.sky.ssh.login.form删了;

2)我们把原有的service类中的一些必要传入StudentForm的措施的中的StudentForm改成

org.sky.ssh.vo.StudentVO,其内容如下:

package org.sky.ssh.vo;

import java.io.Serializable;

public class StudentVO implements Serializable {

private String studentNo = "";

private String studentName = "";

public String getStudentNo() {

return studentNo;

}

public void setStudentNo(String studentNo) {

this.studentNo = studentNo;

}

public String getStudentName() {

return studentName;

}

public void setStudentName(String studentName) {

this.studentName = studentName;

}

}

3)把原有的两个action文件也删了吧(删了就删了,反正我们要用struts2来重写)

4)打开web.xml文件,把下面这些内容去掉落

jsp-config>

taglib>

taglib-uri>/WEB-INF/struts-bean.tldtaglib-uri>

taglib-location>/WEB-INF/struts-bean.tldtaglib-location>

taglib>

taglib>

taglib-uri>/WEB-INF/struts-html.tldtaglib-uri>

taglib-location>/WEB-INF/struts-html.tldtaglib-location>

taglib>

taglib>

taglib-uri>/WEB-INF/struts-logic.tldtaglib-uri>

taglib-location>/WEB-INF/struts-logic.tldtaglib-location>

taglib>

jsp-config>

5)打开web.xml文件,把.do都改成.action

6)打开web.xml文件,把这些去掉落

servlet>

servlet-name>actionservlet-name>

servlet-class>org.apache.struts.action.ActionServletservlet-class>

init-param>

param-name>configparam-name>

param-value>/WEB-INF/struts-config.xml,

/WEB-INF/struts-config/login.xml,

/WEB-INF/struts-config/index.xml

param-value>

init-param>

init-param>

param-name>debugparam-name>

param-value>3param-value>

init-param>

init-param>

param-name>detailparam-name>

param-value>3param-value>

init-param>

load-on-startup>2load-on-startup>

servlet>

7)打开web.xml文件,加入struts2的设置设置设备摆设摆设

filter>

filter-name>struts2filter-name>

filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterfilter-class>

filter>

filter-mapping>

filter-name>struts2filter-name>

url-pattern>*.actionurl-pattern>

filter-mapping>

可以看到struts2框架是一个基于filter的框架,确保这个filter在所有工程中你自己定义的filter的着末面,要不然你自己定义的filter会被struts2给filter掉落(这点必然要留意)。

着末别忘了把:

init-param>

param-name>excludeparam-name>

param-value>/jsp/login/login.jsp,

/login.action

param-value>

init-param>

这边的原有的/login.do改成/login.action哦。

确保工程编译没有任何问题,然后我们按照《【J2EE架构师】19、应用maven构建Spring工程》中的“四、若何让Maven构建的工程在eclipse里跑起来”对工程进行设置,使得工程可以在eclipse的tomcat中跑起来。

跑起来后直接抛出一堆的错,然后我们来看为什么

便是下面这个狗屁错。

其缘故原由在于因为应用的struts2。原有的这个cglib:2.1.3,这个包对付spring3和hibernate3还有struts1.3来说没有任何问题,在碰到struts2时就冲突了,是以我们必要把这个包也给exclude掉落

Exclude掉落了后没有cglib包了,AOP类反射没法玩了,怎么办?

简单:

手工在pom.xml文件中添加一个cglib较新版本的包,如下:

dependency>

groupId>org.hibernategroupId>

artifactId>hibernate-entitymanagerartifactId>

version>3.3.1.gaversion>

exclusions>

exclusion>

artifactId>cglibartifactId>

groupId>cglibgroupId>

exclusion>

exclusions>

dependency>

dependency>

groupId>cglibgroupId>

artifactId>cglib-nodepartifactId>

version>2.2version>

dependency>

再运行工程,统统无误,tomcat启动时正常,阐明我们的框架已经搭好了,接下来我们就要开始改我们的struts的action层了。

四、应用struts2重写action层

4.1 struts的设置设置设备摆设摆设文件

Struts2只有一个核心的struts.xml文件,它应该放在运行工程的classpath路径下即WEB-INF/classes目录下,以是我们把它放在工程的resources目录下,使得它在工程被编译时会被自动编译到工程的WEB-INF/classes目录下.

其内容如下:

xml version="1.0" encoding="UTF-8"?>

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

struts>

include file="struts-default.xml" />

package name="login" extends="struts-default">

global-results>

result name="error">/jsp/error/syserror.jsp

result>

global-results>

global-exception-mappings>

exception-mapping result="error" exception="java.lang.Exception" />

global-exception-mappings>

action name="login" class="org.sky.ssh.login.action.LoginAction">

result name="success" type="redirectAction">

param name="namespace">/param>

param name="actionName">indexInitparam>

result>

action>

package>

package name="index" extends="login">

action name="indexInit" class="org.sky.ssh.student.action.StudentAction"

method="indexInit">

result>/index.jspresult>

action>

package>

package name="studentAdmin" extends="login">

action name="popAddStudent" class="org.sky.ssh.student.action.StudentAction"

method="popAddStudent">

result>/jsp/student/studentAdd.jspresult>

action>

action name="addStudent" class="org.sky.ssh.student.action.StudentAction"

method="addStudent">

result>/jsp/student/studentAdd.jspresult>

action>

action name="addStudent" class="org.sky.ssh.student.action.StudentAction"

method="addStudent">

result>/jsp/student/studentAdd.jspresult>

action>

action name="delStudent" class="org.sky.ssh.student.action.StudentAction"

method="delStudent">

result name="success" type="redirectAction">

param name="namespace">/param>

param name="actionName">indexInitparam>

result>

action>

package>

struts>

4.2 struts2中的类的书写

struts2中的action便是一个通俗的class,它的public措施名便是一个详细的action,这相称于原有struts1中的DispatchAction,只不过它做的加倍机动。

如:我有一个按钮叫addStudent,假如你在你的action的类中有一个publicString addStudent()措施,那么你的这个按钮对应的action名就叫/addStudent.action(神奇吧)。

我们对应着“”来看我们的login.action吧,前面的这个后面的器械便是我们的web路径即相称于“/login.action”。

org.sky.ssh.login.action.LoginAction类

package org.sky.ssh.login.action;

import java.util.Map;

import javax.annotation.Resource;

import javax.servlet.RequestDispatcher;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.struts2.interceptor.ServletRequestAware;

import org.apache.struts2.interceptor.ServletResponseAware;

import org.apache.struts2.interceptor.SessionAware;

import org.sky.ssh.service.LoginService;

import org.sky.ssh.util.Constants;

import org.sky.ssh.util.session.UserSessionInfo;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {

protected final Log logger = LogFactory.getLog(getClass());

private Map att;

private HttpServletRequest request = null;

private HttpServletResponse response;

@Resource

LoginService loginService;

public void setServletRequest(HttpServletRequest request) {

this.request = request;

}

public void setServletResponse(HttpServletResponse response) {

this.response = response;

}

public void setSession(Map att) {

this.att = att;

}

public String execute() throws Exception {

String loginId = "";

String loginPwd = "";

HttpSession session = request.getSession();

String loginCode = "100";

try {

loginId = (String) request.getParameter("loginId");

loginPwd = (String) request.getParameter("loginPwd");

if (loginService.login(loginId, loginPwd)) {

UserSessionInfo uinfo = new UserSessionInfo();

uinfo.setLoginId(loginId);

session.setAttribute(Constants.USER_SESSION, uinfo);

} else {

loginCode = "101";

}

request.setAttribute("loginCode", loginCode);

if (!loginCode.equals("100")) {

RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/login/login.jsp");

dispatcher.forward(request, response);

}

return SUCCESS;

} catch (Exception e) {

logger.error("UserLogin Exception:" + e.getMessa和记娱h188下载app手机版ge(), e);

throw new Exception("UserLogin Exception:" + e.getMessage(), e);

}

}

}

在查看此类时留意以下几点地方:

1) 留意request, response, session是怎么被利用到struts2的action的class中去的;

2) public String execute() throws Exception {…}措施就相称于原有struts1.x中的unspecified措施,是被默认履行的;

3) action措施必须返回一个String类型,默认有SUCCESS和FAIL(留意大年夜小写),它就对应着你的struts.xml文件中的:success" type="redirectAction">。

4.3 struts2中的跳转

不带request值的跳转写法

result name="success" type="redirectAction">

param name="namespace">/param>

param name="actionName">indexInitparam>

result>

留意这个type=”redirectAction”,它只是阐明这个跳转是一个redirect,不管你在上一个action的request中setAttribute了什么值,当它顺利到达下一个action或者是.jsp时,它是带不出上一个request中的值的。

假如你要从一个action到一个action或者是从一个action到一个jsp并且要把值在request中带以前该怎么跳呢?

如下所示:

带request值的从action跳jsp的写法

action name="indexInit" class="org.sky.ssh.student.action.StudentAction" method="indexInit">

result>/index.jspresult>

action>

这边默认假如action措施返回SUCCESS就会触发这个跳转

带request值的从action跳action的写法

action name="delStudent" class="org.sky.ssh.student.action.StudentAction" method="delStudent">

result name="success" type="redirectAction">

param name="namespace">/param>

param name="actionName">indexInitparam>

result>

action>

带request值的直接从acton类中(不经由过程struts设置设置设备摆设摆设)的跳转写法

RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/login/login.jsp");

dispatcher.forward(request, response);

4.4 /jsp/login/login.jsp

我们打开这个login.jsp,它来自于原有的myssh工程,我们把头上的这些器械去掉落,它们是struts1的标签:

%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

把中的action=后的login.do改成:

action="${pageContext.request.contextPath}/login.action"

4.5 继承扫除maven库的jar包的差错

然后我们启动tomcat,输入http://localhost:8080/myssh2 ,在登录页面敲入相关的用户名/密码后一点登录,直接看到一堆的前台jsp页面显示差错和后台差错。

其缘故原由便是原有的struts1.x的依附包中会自动带入jstl相关的jar包,它们是:

Jstl和standard两个包,而struts2是不带这两个jar包的依附的,由于struts2有着自己强大年夜的且富厚的tag。是以我们在应用struts2时,要把这个两个jar包加入到pom.xml文件中去,在pom.xml文件中加入:

dependency>

groupId>javax.servletgroupId>

artifactId>jstlartifactId>

version>1.0.2version>

dependency>

dependency>

groupId>taglibsgroupId>

artifactId>standardartifactId>

version>1.0.6version>

dependency>

4.6 应用struts2风格在request中set一个list

在类中声明一个局部变量且创建一对set{…}get{…}

private List stdList = new ArrayList();

public void setStudentVO(StudentVO studentVO) {

this.studentVO = studentVO;

}

public List getStdList() {

return stdList;

}

此时你一旦在某个public措施中对这个值进行过操作,那么在这个action跳转到下一个jsp时,你在jsp的request中会自动取得这个list的值而不必要在原有的struts的action中写诸如:setAttributer(“stdList”,stdList);这样的器械了,是不是很优雅?

5. org.sky.ssh.student.action. StudentAction类

package org.sky.ssh.student.action;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import javax.annotation.Resource;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.struts2.interceptor.ServletRequestAware;

import org.apache.struts2.interceptor.ServletResponseAware;

import org.apache.struts2.interceptor.SessionAware;

import org.sky.ssh.service.StudentService;

import org.sky.ssh.vo.StudentVO;

import com.opensymphony.xwork2.ActionSupport;

public class StudentAction extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {

private Map att;

private HttpServletRequest request = null;

private HttpServletResponse response;

private List stdList = new ArrayList();

private StudentVO studentVO = new StudentVO();

public StudentVO getStudentVO() {

return studentVO;

}

public void setStudentVO(StudentVO studentVO) {

this.studentVO = studentVO;

}

public List getStdList() {

return stdList;

}

public void setStdList(List stdList) {

this.stdList = stdList;

}

@Resource

private StudentService stdService = null;

protected final Log logger = LogFactory.getLog(getClass());

public void setServletRequest(HttpServletRequest request) {

this.request = request;

}

public void setServletResponse(HttpServletResponse response) {

this.response = response;

}

public void setSession(Map att) {

this.att = att;

}

public String indexInit() throws Exception {

try {

stdList = stdService.getAllStudent();

return SUCCESS;

} catch (Exception e) {

logger.error("Init Index Exception:" + e.getMessage(), e);

throw new Exception("Init Index Exception:" + e.getMessage(), e);

}

}

public String popAddStudent() throws Exception {

return SUCCESS;

}

public String addStudent() throws Exception {

try {

stdService.addStudent(studentVO.getStudentName());

} catch (Exception e) {

logger.error("addStudent error:" + e.getMessage(), e);

throw new Exception("addStudent error:" + e.getMessage(), e);

}

return SUCCESS;

}

public String delStudent() throws Exception {

String[] stdArray = null;

try {

stdArray = request.getParameterValues("selectedStudents");

if (stdArray != null && stdArray.length > 0) {

stdService.delStudent(stdArray);

}

} catch (Exception e) {

logger.error("delStudent error:" + e.getMessage(), e);

throw new Exception("delStudent error:" + e.getMessage(), e);

}

return SUCCESS;

}

}

6. myssh2工程的完备pom.xml

project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

modelVersion>4.0.0modelVersion>

groupId>org.sky.ssigroupId>

artifactId>betaartifactId>

packaging>warpackaging>

version>0.0.1-SNAPSHOTversion>

name>Alpha_MVN Maven Webappname>

url>http://maven.apache.orgurl>

dependencies>

dependency>

groupId>junitgroupId>

artifactId>junitartifactId>

version>3.8.1version>

scope>testscope>

dependency>

dependency>

groupId>log4jgroupId>

artifactId>log4jartifactId>

version>1.2.8version>

dependency>

dependency>

groupId>c3p0groupId>

artifactId>c3p0artifactId>

version>0.9.1.2version>

dependency>

dependency>

groupId>jaxengroupId>

artifactId>jaxenartifactId>

version>1.1.1version>

exclusions>

exclusion>

artifactId>xercesImplartifactId>

groupId>xercesgroupId>

exclusion>

exclusions>

dependency>

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts2-spring-pluginartifactId>

version>2.3.1.2version>

dependency>

dependency>

groupId>org.apache.strutsgroupId>

artifactId>struts2-coreartifactId>

version>2.3.1.2version>

exclusions>

exclusion>

artifactId>toolsartifactId>

groupId>com.sungroupId>

exclusion>

exclusions>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-strutsartifactId>

version>3.1.0.RELEASEversion>

exclusions>

exclusion>

artifactId>strutsartifactId>

groupId>strutsgroupId>

exclusion>

exclusions>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-coreartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-contextartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-context-supportartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-beansartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-ormartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-jdbcartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-txartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-aopartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-aspectsartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-webmvc-portletartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-jmsartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-asmartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springframeworkgroupId>

artifactId>spring-testartifactId>

version>3.1.0.RELEASEversion>

dependency>

dependency>

groupId>org.springmodulesgroupId>

artifactId>spring-modules-jakarta-commonsartifactId>

version>0.8aversion>

dependency>

dependency>

groupId>org.aspectjgroupId>

artifactId>aspectjrtartifactId>

version>1.6.12version>

dependency>

dependency>

groupId>org.aspectjgroupId>

artifactId>aspectjweaverartifactId>

version>1.6.12version>

dependency>

dependency>

groupId>org.hibernategroupId>

artifactId>hibernate-coreartifactId>

version>3.3.1.GAversion>

dependency>

dependency>

groupId>org.hibernategroupId>

artifactId>hibernate-c3p0artifactId>

version>3.3.1.GAversion>

dependency>

dependency>

groupId>org.hibernategroupId>

artifactId>hibernate-ehcacheartifactId>

version>3.3.1.GAversion>

dependency>

dependency>

groupId>org.hibernategroupId>

artifactId>hibernate-entitymanagerartifactId>

version>3.3.1.gaversion>

exclusions>

exclusion>

artifactId>cglibartifactId>

groupId>cglibgroupId>

exclusion>

exclusions>

dependency>

dependency>

groupId>cglibgroupId>

artifactId>cglib-nodepartifactId>

version>2.2version>

dependency>

dependency>

groupId>org.hibernategroupId>

artifactId>hibernate-commons-annotationsartifactId>

version>3.3.0.gaversion>

dependency>

dependency>

groupId>org.hibernategroupId>

artifactId>hibernate-annotationsartifactId>

version>3.3.1.GAversion>

dependency>

dependency>

groupId>log4jgroupId>

artifactId>log4jartifactId>

version>1.2.16version>

dependency>

dependency>

groupId>org.slf4jgroupId>

artifactId>slf4j-apiartifactId>

version>1.5.10version>

dependency>

dependency>

groupId>org.slf4jgroupId>

artifactId>slf4j-log4j12artifactId>

version>1.5.10version>

dependency>

dependency>

groupId>commons-beanutilsgroupId>

artifactId>commons-beanutilsartifactId>

version>1.8.3version>

dependency>

dependency>

groupId>commons-chaingroupId>

artifactId>commons-chainartifactId>

version>1.2version>

dependency>

dependency>

groupId>commons-codecgroupId>

artifactId>commons-codecartifactId>

version>1.6version>

dependency>

dependency>

groupId>commons-collectionsgroupId>

artifactId>commons-collectionsartifactId>

version>3.2.1version>

dependency>

dependency>

groupId>commons-configurationgroupId>

artifactId>commons-configurationartifactId>

ve和记娱h188下载app手机版rsion>1.7version>

dependency>

dependency>

groupId>commons-digestergroupId>

artifactId>commons-digesterartifactId>

version>2.1version>

dependency>

dependency>

groupId>commons-fileuploadgroupId>

artifactId>commons-fileuploadartifactId>

version>1.2.2version>

dependency>

dependency>

groupId>commons-iogroupId>

artifactId>commons-ioartifactId>

version>2.1version>

dependency>

dependency>

groupId>commons-langgroupId>

artifactId>commons-langartifactId>

version>2.6version>

dependency>

dependency>

groupId>commons-logginggroupId>

artifactId>commons-loggingartifactId>

version>1.1.1version>

dependency>

dependency>

groupId>commons-netgroupId>

artifactId>commons-netartifactId>

version>3.0.1version>

dependency>

dependency>

groupId>commons-poolgroupId>

artifactId>commons-poolartifactId>

version>1.6version>

dependency>

dependency>

groupId>commons-validatorgroupId>

artifactId>commons-validatorartifactId>

version>1.3.1version>

dependency>

dependency>

groupId>org.apache.commonsgroupId>

artifactId>commons-compressartifactId>

version>1.3version>

dependency>

dependency>

groupId>javax.servletgroupId>

artifactId>servlet-apiartifactId>

version>2.4version>

scope>compilescope>

dependency>

dependency>

groupId>org.apache.velocitygroupId>

artifactId>velocityartifactId和记娱h188下载app手机版>

version>1.7version>

dependency>

dependency>

groupId>javax.mailgroupId>

artifactId>mailartifactId>

version>1.4.4version>

dependency>

dependency>

groupId>org.jasyptgroupId>

artifactId>jasyptartifactId>

version>1.9.0version>

dependency>

dependency>

groupId>org.jasyptgroupId>

artifactId>jasypt-spring3artifactId>

version>1.9.0version>

dependency>

dependency>

groupId>org.jasyptgroupId>

artifactId>jasypt-springsecurity3artifactId>

version>1.9.0version>

dependency>

dependency>

groupId>net.sf.ehcachegroupId>

artifactId>ehcacheartifactId>

version>1.6.2version>

dependency>

dependency>

groupId>junitgroupId>

artifactId>junitartifactId>

version>4.10version>

dependency>

dependency>

groupId>javax.servletgroupId>

artifactId>jstlartifactId>

version>1.0.2version>

dependency>

dependency>

groupId>taglibsgroupId>

artifactId>standardartifactId>

version>1.0.6version>

dependency>

dependency>

groupId>org.dbunitgroupId>

artifactId>dbunitartifactId>

version>2.4.8version>

dependency>

dependency>

groupId>mockitgroupId>

artifactId>jmockitartifactId>

version>0.999.4version>

dependency>

dependencies>

build>

finalName>myssh2finalName>

build>

project>

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: