SSH配置之一
14:53 2011-1-2
----------------------------在Myeclipse里增加Spring Hibernate struts capabilities
Add MyEclipse Spring Hibernate struts and User libraries to project
在Myeclipse点击项目右键 再点列表里的Myeclipse 选 Spring Hibernate struts
hibernate.hbm.xml
1myeclipse - hibernate
ibm db2(Universal driver)
myeclipse-spring
(包冲突 只留一个
asm2.23 util
commonslogging
)
3+web
hibernate
添加struts
2(dojo..)+spring-lib
------------------------------------------------创建文件夹 conf
将applicationContext.xml放到conf下
修改applicationContext.xml的在 - web.xml->conf/
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:conf/applicationContext.xml</param-value>
</context-param>
----------------------------------------------------------------------------划分三大框架com.zyl.hiber
建包
com.zyl.hiber.po
逆向工程
idetety
------------------------------------------------------Users.java
com.zyl.hiber.po
写usersname 和password的构造方法 方便测试
所有字段
toString
equals
//添加映射User.hbm.xml到hibernate.hbm.xml
//逆向工程的结果
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
/**
* Users entity. @author MyEclipse Persistence Tools
*/
public class Users implements java.io.Serializable {
// Fields
private Long usersid;//---->容易自动生成long改成-->Long
private String usersname;
private String password;
private Date regdate;
// Constructors
/** default constructor */
public Users() {
}
/** full constructor */
public Users( String usersname, String password,
Date regdate) {
this.usersname = usersname;
this.password = password;
this.regdate = regdate;
}
// Property accessors
public Long getUsersid() {
return this.usersid;
}
public void setUsersid(Long usersid) {
this.usersid = usersid;
}
public String getUsersname() {
return this.usersname;
}
public void setUsersname(String usersname) {
this.usersname = usersname;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getRegdate() {
return this.regdate;
}
public void setRegdate(Date regdate) {
this.regdate = regdate;
}
@Override
public String toString() {
return "Users [password=" + password + ", regdate=" + regdate
+ ", usersid=" + usersid + ", usersname=" + usersname + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((password == null) ? 0 : password.hashCode());
result = prime * result + ((regdate == null) ? 0 : regdate.hashCode());
result = prime * result + ((usersid == null) ? 0 : usersid.hashCode());
result = prime * result
+ ((usersname == null) ? 0 : usersname.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Users other = (Users) obj;
if (password == null) {
if (other.password != null)
return false;
} else if (!password.equals(other.password))
return false;
if (regdate == null) {
if (other.regdate != null)
return false;
} else if (!regdate.equals(other.regdate))
return false;
if (usersid == null) {
if (other.usersid != null)
return false;
} else if (!usersid.equals(other.usersid))
return false;
if (usersname == null) {
if (other.usersname != null)
return false;
} else if (!usersname.equals(other.usersname))
return false;
return true;
}
}
------------------------------------------------------IUsersDAO.java
com.zyl.hiber.dao
interface -IUserDAO
public void saveUsers(Users users)throws HibernateException;//saveUsers是写保存用户是后集成的16:33 2011-1-2
public Users findUsersByProperties(String username,String password)throws HibernateException;
------------------------------------------------------IUsersDAOImpl.java
package com.zyl.hiber.daoimpl;
import java.util.List;
import org.hibernate.HibernateException;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
//编写实现 IUserDAOImpl
import .u;
public class IUsersDAOImpl extends HibernateDaoSupport implements IUsersDAO {
public Users findUsersByProperties(String username, String password)
throws HibernateException {
Users users = new Users(username, null, null);
List<Long> queryResult = this
.getHibernateTemplate()
.find(
"select u.usersid from Users u where u.usersname =? and u.password= ?",new String[] { username, password });
if (queryResult != null && queryResult.size() == 1) {
users.setUsersid(queryResult.get(0));
return users;
} else {
return users;
}
}
//saveUsers是写保存用户是后集成的16:33 2011-1-2
public void saveUsers(Users users) throws HibernateException {
this.getHibernateTemplate().save(users);
}
}
-------------------------------------------------------beans-dao.xml
选 Schema http://www.springframework.org/schema/beans/spring-bean2.5.xsd
root elements 选beans 不要Prefix p
<bean id="usersDao" class="com.zyl.hiber.daoimpl.IUsersDAOImpl">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
-------------------------------------------------------IusersDAOTestCase.java
JUnit
右键点击要测的文件-选JUnit4包选com.zyl.dao.test - new - others - Junit - Junit Test Case - new Junit4 -
name:XxxTestCase
IusersDAOTestCase
方法都要测
setUpBeforeClass
tearDownAfterClass
setup
teardown
测试方法
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class IUsersDAOImplTestCase {
private static BeanFactory beanFactory;
private IUsersDAO usersDao = null;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
beanFactory = new ClassPathXmlApplicationContext(new String[] {
"conf/applicationContext.xml" });
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
beanFactory = null;
}
@Before
public void setUp() throws Exception {
usersDao = (IUsersDAO) beanFactory.getBean("usersDao");
}
@After
public void tearDown() throws Exception {
usersDao = null;
}
@Test
public void testFindUsersByProperties() {
Users users = usersDao.findUsersByProperties("gary1","1234");
Assert.assertNotNull("HQL错误",users);
Assert.assertNull("逻辑错误",users.getUsersid());
System.out.println(users);
}
}
---------------------------------------------------------------------------------------com.zyl.spring
----------------------------------------------------------------------------------com.zyl.spring.service
-------------------------------------------------------IUsersService.java
com.zyl.spring.service
interface-IusersService
//业务方法
public boolean findUsersByNameAndPass(Users users);
public boolean saveUsers(Users users);
---------------------------------------------------------------------com.zyl.spring.serviceIpml
-------------------------------------------------------IusersServiceImpl.java
com.zyl.spring.serviceIpml
实现IusersService
IusersServiceImpl implemts IUSersService{
private userDao
setter and getter
//核心业务方法
findUsersBynameAndPass(users){
//限制输入时.Users中不应该有ID
!=null
users =usersDao.findByProperties(users)//try catch
//查询后User应该有 ID
getuserID
}
}
实现saveUsers
import org.hibernate.HibernateException;
public class IUsersServiceImpl implements IUsersService {
private IUsersDAO usersDao;
public IUsersDAO getUsersDao() {
return usersDao;
}
public void setUsersDao(IUsersDAO usersDao) {
this.usersDao = usersDao;
}
// 核心业务功能
public boolean findUsersByNameAndPass(Users users) {
if (users == null)
return false;
// 限制输入时,Users中不应该有ID
if (users.getUsersid() != null)
return false;
try {
users = usersDao.findUsersByProperties(users.getUsersname(), users
.getPassword());
} catch (HibernateException e) {
e.printStackTrace();
return false;
}
// 查询后User应该有ID
if (users.getUsersid() != null)
return true;
else
return false;
}
public boolean saveUsers(Users users) {
boolean isSaved = false;
if (null == users)
return false;
if (null != users.getUsersid())
return false;
try {
usersDao.saveUsers(users);
isSaved = true;
} catch (Exception e) {
e.printStackTrace();
isSaved = false;
}
return isSaved;
}
}
---------------------------------------------------------------------com.zyl.spring.serviceIpml.test
-------------------------------------------------------IusersServiceImplTestCase
//测试核心业务
private IUserService
@before
setup
从bean中取 Usersservice对象
TestFindUsersByNameAndID
new Users("zyl" "123")
断言 查询错误 conditions
syso conditions
public class IUsersServiceImplTestCase {
private static ApplicationContext beanFactory;
private IUsersService usersService;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
beanFactory = new ClassPathXmlApplicationContext(new String[] {
"conf/applicationContext.xml"});
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
beanFactory = null;
}
@Before
public void setUp() throws Exception {
usersService = (IUsersService)beanFactory.getBean("usersServiceProxy");
}
@After
public void tearDown() throws Exception {
usersService = null;
}
//@Test
public void testFindUsersByNameAndPass() {
Users users = new Users("gary","1234",null);
boolean isFound = usersService.findUsersByNameAndPass(users);
Assert.assertTrue("数据錯誤",isFound);
System.out.println(isFound);
}
@Test
public void testSaveUsers(){
Users users = new Users("gg","123456",null);
boolean isSaved = usersService.saveUsers(users);
Assert.assertTrue("插入失败",isSaved);
}
}
-------------------------------------------------------beans-service.xml
<bean id="userService" class=IusersServiceImpl>
<property name="usersDao">
<ref>//每一次都是new出来的
</property>
事物代理(具有增强功能的代理) id userServiceProxy 继承paretent txProxy
代理UserService taget
<bean id="usersService" class="com.zyl.spring.serviceimpl.IUsersServiceImpl">
<property name="usersDao">
<ref bean="usersDao"/>
</property>
</bean>
<bean id="usersServiceProxy" parent="txProxy">
<property name="target" ref="usersService"></property>
<property name="proxyTargetClass" value="false"></property>
<property name="proxyInterfaces">
<list><value>com.zyl.spring.service.IUsersService</value></list>
</property>
</bean>
-------------------------------------------------------applicationContext.xml
<!--通过代理工厂配置事物-->
id=tx class="hibernate3"
id=txProxy class="transaction"
-property name
-props
//Spring的事物属性意义transactionAttributes *必背
--prop key
<来源web.xml>impotr resource
//Spring的事物属性意义transactionAttributes
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
如果出现<prop key="myMethod">PROPAGATION_REQUIRED,readOnly,-Exception </prop>
其中:
-Exception表示有Exception抛出时,事务回滚. -代表回滚+就代表提交
readonly 就是read only, 设置操作权限为只读,一般用于查询的方法,优化作用.
<!-- 通过代理工厂配置事务-->
<bean id="tx" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean abstract="true" id="txProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager" ref="tx"></property>
<property name="transactionAttributes">
<props>
<prop key="save*">
PROPAGATION_REQUIRED,-Exception
</prop>
<prop key="find.*">
PROPAGATION_REQUIRED,readOnly,-Exception
</prop>
</props>
</property>
</bean>
<import resource="beans-dao.xml"/>
<import resource="beans-service.xml"></import>
<import resource="beans-action.xml"></import>
----------------------------------------------------------------------------com.zyl.struts
集成框架
右键
dwr
dojo
struts2-spring Liberty
core
删除一些包
就剩struts spring plug
-------------------------------------------------------index.jsp
1<%@ taglib uri="/struts-tags" prefix="s" %>
2<body>
-<s:form action="LoginAtion">
-<S:textfield name="users.usersname" 如果国际化用KEY
//动态方法调用 !login
<S:actionerror
<body>
<s:actionerror/>
<s:actionmessage/>
<s:form name="loginForm" action="LoginAction" namespace="/entrance" method="post">
<s:textfield name="users.usersname" label="用户名"></s:textfield>
<s:password name="users.password" label="密码"></s:password>
<s:submit value="登录"></s:submit>
</s:form>
</body>
-------------------------------------------------------------------文件夹jsp
-------------------------------------------------------welcome.jsp
<s:actionmessage/> 登录成功!<br>
-------------------------------------------------------struts.xml
DTD.struts http://struts.apache.org/dtds/struts-2.1.dtd
global
将login设成全局的在异常前边
package name=entrancePck extends
全局的异常映射 出现错误 到input视图上
-action"LoginAction" class
--result /jsp/welcome
---result input
---result login
<package name="entrancePack" namespace="/entrance" extends="struts-default">
<global-results>
<result name="login">/index.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="input" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
<action name="LoginAction" class="loginAction" method="login">
<result>/jsp/welcome.jsp</result>
<result name="input">/index.jsp</result>
</action>
<action name="LogOutAction" class="logoutAction" method="logout">
<result name="input">/index.jsp</result>
</action>
</package>
-------------------------------------------------------struts.properties
(lib包中的
-core
--default.property-65行 36行 IoC)
struts.objectFactory=spring
struts.configuration.xml.reload=true
struts.i18n.encode=UTF-8
----------------------------------------------------------------------------com.zyl.struts.action
-------------------------------------------------------EnterAction.java
EnterAction extends ActionSupport
private Users users
private IUsersService
产生settergetter
登陆的方法
{
在session 里面保存一个标记保存登陆的信息ActionContext
产生拦截器
}
退出的方法{
使用invalidate对象
返回到首页页面
}
import org.apache.struts2.ServletActionContext;
import com.zyl.hiber.po.Users;
import com.zyl.spring.service.IUsersService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class EnterAction
extends ActionSupport
{
private Users users;
private IUsersService usersService;
public Users getUsers() {
return users;
}
public void setUsers(Users users) {
this.users = users;
}
public IUsersService getUsersService() {
return usersService;
}
public void setUsersService(IUsersService usersService) {
this.usersService = usersService;
}
public String login(){
boolean isFound = usersService.findUsersByNameAndPass(users);
if(isFound){
ActionContext.getContext().getSession().put("loginUser",users.getUsersname());
System.out.println(users.getUsersid());
this.addActionMessage("欢迎"+users.getUsersname()+"");
return SUCCESS;
}else{
this.addActionError("用户名密码不正确");
return LOGIN;
}
}
public String logout(){
ServletActionContext.getRequest().getSession().invalidate();
return LOGIN;
}
}
-------------------------------------------------------beans-action.xml
在bean容器里面声明你有声明样的对象映射为loginAction
bean name loginAction 显示配置 prototype 使Action不是单例模式 是原形
为UsersService赋值
proxy
web三大核心 servlet 监听器 拦截器
<bean name="loginAction" class="com.zyl.struts.action.EnterAction" scope="prototype">
<property name="usersService">
<ref bean="usersServiceProxy"/>
</property>
</bean>
<bean name="logoutAction" class="com.zyl.struts.action.EnterAction" scope="prototype">
<property name="usersService">
<ref bean="usersServiceProxy"></ref>
</property>
</bean>
<bean name="saveUsersAction" class="com.zyl.struts.action.UsersAdminAction" scope="prototype">
<property name="usersService">
<ref bean="usersServiceProxy"/>
</property>
</bean>
-------------------------------------------------------web.xml
filter ActionCLeanUp
FilterDispatcher
登陆验证信息 要更新 不是累加
延迟加载
<listenner>
<lis-class>ContextLoaderListener老的tomCat要配servlet而不是Listener
参数<param-name>configContext
<filter>
<filter-name>ActionContextCleanUp</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>ActionContextCleanUp</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:conf/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
-------------------------------------------------------表单验证EnterAction-Validation.xml
com.zyl.struts.action
OpenSympho xwork
<validators>
<field
<field name="users">
<field-validator type="visitor">
<param name="context">UsersContext</param>
<param name="appendPrefix">true</param>
<message>用户信息:</message>
</field-validator>
</field>
</validators>
----------------------------------------PO中表单验证Users-UserContext-Validation.xml
//OpenSymphony Group//XWork Validator 1.0.3//EN
http:///xwork/xwork-validator-1.0.3.dtd"
com.zyl.hiber.po
短路
param trim >true<
ognl表达式
message>名称长度${minlength}-${maxlength}
要配message-validation-cleanup
<!--<validators>-->
<!-- <field name="usersname">-->
<!-- <field-validator type="requiredstring" short-circuit="true">-->
<!-- <param name="trim">true</param>-->
<!-- <message>名称不能为空</message>-->
<!-- </field-validator>-->
<!-- <field-validator type="stringlength">-->
<!-- <param name="trim">true</param>-->
<!-- <param name="minLength">4</param>-->
<!-- <param name="maxLength">10</param>-->
<!-- <message>名称长度${minLength}-${maxLength}之间</message>-->
<!-- </field-validator>-->
<!-- </field>-->
<!-- <field name="password">-->
<!-- <field-validator type="requiredstring" short-circuit="true">-->
<!-- <param name="trim">true</param>-->
<!-- <message>密码不能为空</message>-->
<!-- </field-validator>-->
<!-- <field-validator type="stringlength">-->
<!-- <param name="trim">true</param>-->
<!-- <param name="minLength">4</param>-->
<!-- <message>密码长度${minLength}以上</message>-->
<!-- </field-validator>-->
<!-- </field>-->
<!--</validators>-->
---------------------------------------------------------------------增加操作
-------------------------------------------------------UsersAdminAction.java
com.zyl.struts.action
private
saveUsers(){
this.message
}
import com.opensymphony.xwork2.ActionSupport;
public class UsersAdminAction extends ActionSupport {
private Users users;
private IUsersService usersService;
public Users getUsers() {
return users;
}
public void setUsers(Users users) {
this.users = users;
}
public IUsersService getUsersService() {
return usersService;
}
public void setUsersService(IUsersService usersService) {
this.usersService = usersService;
}
public String saveUsers(){
boolean isSaved = usersService.saveUsers(users);
System.out.println(isSaved);
if(isSaved){
this.addActionMessage("用户信息保存成功!,请重新登录");
return SUCCESS;
}
else{
this.addFieldError("users","用户添加失败!");
return INPUT;
}
}
}
-------------------------------------------------------AddUsers.jsp 13:53 2011-1-2
<%@ taglib uri="/struts-tags" prefix="s" %>
<s:fielderror>
<s:param name="users"></s:param>
</s:fielderror>
<s:form name="usersForm" action="saveUsersAction" namespace="/admin" method="post">
<s:textfield name="users.usersname" label="用户名"></s:textfield>
<s:password name="users.password" label="密码"></s:password>
<s:submit value="保存"></s:submit>
</s:form>
</body>
<s:filederror
写配置文件 配验证
-------------------------------------------------------
数据访问对象
访问犯法
业务功能
app.xml事物代理
dao配dao
service.xml 业务
Action.xml struts 控制对象
延迟加载
Spring中opensesionInView
---------------------------------------------------------------
MyEclipse copy qualified name
ssh
/ssh/src
com.zyl.hiber.dao
/ssh/src/com/zyl/hiber/dao/IUsersDAO.java
com.zyl.hiber.daoimpl
/ssh/src/com/zyl/hiber/daoimpl/IUsersDAOImpl.java
com.zyl.hiber.daoimpl.test
/ssh/src/com/zyl/hiber/daoimpl/test/IUsersDAOImplTestCase.java
com.zyl.hiber.po
/ssh/src/com/zyl/hiber/po/Users.java
/ssh/src/com/zyl/hiber/po/Users-UsersContext-validation.xml
/ssh/src/com/zyl/hiber/po/Users.hbm.xml
com.zyl.spring.service
/ssh/src/com/zyl/spring/service/IUsersService.java
com.zyl.spring.serviceimpl
/ssh/src/com/zyl/spring/serviceimpl/IUsersServiceImpl.java
com.zyl.spring.serviceimpl.test
/ssh/src/com/zyl/spring/serviceimpl/test/IUsersServiceImplTestCase.java
com.zyl.struts.action
/ssh/src/com/zyl/struts/action/EnterAction.java
/ssh/src/com/zyl/struts/action/UsersAdminAction.java
/ssh/src/com/zyl/struts/action/EnterAction-validation.xml
/ssh/src/com/zyl/struts/action/UsersAdminAction-validation.xml
com.zyl.util
conf
/ssh/src/log4j.properties
/ssh/src/struts.properties
/ssh/src/struts.xml
/ssh/WebRoot
/ssh/WebRoot/jsp
/ssh/WebRoot/jsp/addusers.jsp
/ssh/WebRoot/jsp/welcome.jsp
/ssh/WebRoot/META-INF
/ssh/WebRoot/WEB-INF
/ssh/WebRoot/index.jsp
-----------------------------------------------------
USERS表
主键 USERSID BIGINT 8 否
USERSNAME VARCHAR 123 是
PASSWORD VARCHAR 255 是
REGDATE TIMESTAMP 10 是
------------------------------------------------------
用到的Lib
/ssh/WebRoot/WEB-INF/lib/antlr-2.7.6.jar
/ssh/WebRoot/WEB-INF/lib/aopalliance.jar
/ssh/WebRoot/WEB-INF/lib/asm-2.2.3.jar
/ssh/WebRoot/WEB-INF/lib/asm-commons-2.2.3.jar
/ssh/WebRoot/WEB-INF/lib/asm-util-2.2.3.jar
/ssh/WebRoot/WEB-INF/lib/aspectjlib.jar
/ssh/WebRoot/WEB-INF/lib/aspectjrt.jar
/ssh/WebRoot/WEB-INF/lib/aspectjweaver.jar
/ssh/WebRoot/WEB-INF/lib/cglib-2.2.jar
/ssh/WebRoot/WEB-INF/lib/cglib-nodep-2.1_3.jar
/ssh/WebRoot/WEB-INF/lib/commons-attributes-api.jar
/ssh/WebRoot/WEB-INF/lib/commons-attributes-compiler.jar
/ssh/WebRoot/WEB-INF/lib/commons-codec.jar
/ssh/WebRoot/WEB-INF/lib/commons-collections-3.1.jar
/ssh/WebRoot/WEB-INF/lib/commons-fileupload.jar
/ssh/WebRoot/WEB-INF/lib/commons-httpclient.jar
/ssh/WebRoot/WEB-INF/lib/commons-io.jar
/ssh/WebRoot/WEB-INF/lib/commons-logging.jar
/ssh/WebRoot/WEB-INF/lib/db2jcc_license_cu.jar
/ssh/WebRoot/WEB-INF/lib/db2jcc.jar
/ssh/WebRoot/WEB-INF/lib/dom4j-1.6.1.jar
/ssh/WebRoot/WEB-INF/lib/ehcache-1.2.3.jar
/ssh/WebRoot/WEB-INF/lib/ejb3-persistence.jar
/ssh/WebRoot/WEB-INF/lib/freemarker.jar
/ssh/WebRoot/WEB-INF/lib/hibernate-annotations.jar
/ssh/WebRoot/WEB-INF/lib/hibernate-commons-annotations.jar
/ssh/WebRoot/WEB-INF/lib/hibernate-entitymanager.jar
/ssh/WebRoot/WEB-INF/lib/hibernate-validator.jar
/ssh/WebRoot/WEB-INF/lib/hibernate3.jar
/ssh/WebRoot/WEB-INF/lib/iText-2.1.3.jar
/ssh/WebRoot/WEB-INF/lib/jasperreports-2.0.5.jar
/ssh/WebRoot/WEB-INF/lib/javassist-3.9.0.GA.jar
/ssh/WebRoot/WEB-INF/lib/jta-1.1.jar
/ssh/WebRoot/WEB-INF/lib/jxl.jar
/ssh/WebRoot/WEB-INF/lib/log4j-1.2.14.jar
/ssh/WebRoot/WEB-INF/lib/log4j-1.2.15.jar
/ssh/WebRoot/WEB-INF/lib/persistence.jar
/ssh/WebRoot/WEB-INF/lib/poi-3.0.1.jar
/ssh/WebRoot/WEB-INF/lib/portlet-api.jar
/ssh/WebRoot/WEB-INF/lib/slf4j-api-1.5.8.jar
/ssh/WebRoot/WEB-INF/lib/slf4j-log4j12-1.5.8.jar
/ssh/WebRoot/WEB-INF/lib/spring-agent.jar
/ssh/WebRoot/WEB-INF/lib/spring-aop.jar
/ssh/WebRoot/WEB-INF/lib/spring-aspects.jar
/ssh/WebRoot/WEB-INF/lib/spring-beans.jar
/ssh/WebRoot/WEB-INF/lib/spring-context.jar
/ssh/WebRoot/WEB-INF/lib/spring-core.jar
/ssh/WebRoot/WEB-INF/lib/spring-jdbc.jar
/ssh/WebRoot/WEB-INF/lib/spring-orm.jar
/ssh/WebRoot/WEB-INF/lib/spring-tomcat-weaver.jar
/ssh/WebRoot/WEB-INF/lib/spring-tx.jar
/ssh/WebRoot/WEB-INF/lib/spring-web.jar
/ssh/WebRoot/WEB-INF/lib/spring-webmvc-portlet.jar
/ssh/WebRoot/WEB-INF/lib/spring-webmvc-struts.jar
/ssh/WebRoot/WEB-INF/lib/spring-webmvc.jar
/ssh/WebRoot/WEB-INF/lib/struts.jar
/ssh/WebRoot/WEB-INF/lib/velocity-1.5.jar
/ssh/WebRoot/WEB-INF/lib/velocity-tools-view-1.4.jar
20100102日志 SSH整合之一
原创mb6444ed45406a4 ©著作权
©著作权归作者所有:来自51CTO博客作者mb6444ed45406a4的原创作品,请联系作者获取转载授权,否则将追究法律责任

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【JavaSE】面向对象三大特性之一,多态
向上转型,向下转型,重写,多态优缺点
父类 子类 向上转型 -
统一日志处理
统一日志处理日志1、配置日志级别日志记录器(Logger)的行为是分等级的。如下表所
java 开发语言 数据库 sed 日志文件