锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
涓銆佸垵濮嬪寲宸ヤ綔:鏂板緩涓涓」鐩?濡?ssh),鍦ㄦ欏圭洰涓鍏ュhibernate鐨勬敮鎸?鏂板緩涓涓〃sstest琛紝鏈夊瓧孌礽d,username,password,id涓轟富鍋ュ拰鑷姩澧?
浜屻佸鏂板緩鐨勬暟鎹〃榪涜hibernate榪涜鏄犲皠,鎵撳紑myhibernate瑙嗗浘錛屽彸鍑諱綘sstest琛?>閫塰ibernate revers engineering閫夐」錛岀劧鍚庢妸Sstest.hbm.xml鏂囦歡鏄犲皠鍒癶ibernateDao鍖呬腑錛屽悓鏃墮変腑宸ュ叿 hibernate mapping file..., java data object....., java data access object dao...閫夐」錛屽厛涓繖鍑犱釜鏂囦歡灝卞彲浠ヤ駭鐢熶笅鍒楀嚑涓?java鏂囦歡:BaseHibernateDAO. ,HibernateSessionFactory ,IBaseHibernateDAO, Sstest,SstestDAO,鏈鍚庝綘瀵逛綘鐨勪唬鐮佽繘琛屾祴璇曪紝嫻嬭瘯鎴愬姛錛岃繘琛屼笅涓姝?br />
涓夈佸湪欏圭洰涓鍏ュspring鐨勬敮鎸侊紝鍦ㄥ鍏ラ」鐩悗涓嶄絾瑕佽嚜鍔ㄤ駭鐢焌pplicationContext.xml,鑰屼笖鍦ㄨ繖涓枃浠墮噷浼氬嚭鐜頒笅闈㈢殑鍐呭錛?br />
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
榪欏氨鏄負浠涔堣鍏堣瀵煎叆hibernate鐨勫師鍥?br />
鍥涖佽嫢浣犲spring鐨刬oc姣旇緝鐔燂紝浣犲彲浠ョ洿鎺ヨ繘鍏ヤ笅涓姝ワ紝濡傛灉涓嶆槸寰堜簡瑙o紝閭d箞浣犲彲浠ュ啓涓涓瘮杈冪畝鍗曠殑渚嬪瓙嫻嬭瘯涓涓嬬湅鏄惁鎴愬姛錛屽繀绔熸鏋跺拰鍦ㄤ竴璧鳳紝鎵浠ュ皬蹇冪偣濂斤紝涓嶇劧鍦ㄤ互鍚庡嚭浜嗘湁闂涓嶅ソ鎵?br />
浜斻佽繘鍏yeclipse hibernate瑙嗗浘涓嬶紝鍦ㄦ柊鐨勫寘錛堝springDao錛変腑閲嶆柊瀵箂stest琛ㄨ繘琛屾槧灝勶紝榪欐鏄犲皠瑕佹敞鎰忕殑灝辨槸錛氭墦寮hibernate reverse engineering瀵硅瘽妗嗕腑澶嶉夋寜閽甹ava data access object(dao)(hibernate 3 only)涓嬶紝dao type 涓嶆槸閫塨asic dao閫夐」錛岃屾槸閫塻pring dao閫夐」錛屽綋浣犳槧灝勬垚鍔熷悗錛屽氨浼氬嚭鐜癝stest.java, SstestDAO.java, Sstest.hbm.xml鍑犱釜鏂囦歡錛屼綘鍙互鍐欎竴涓被榪涜嫻嬭瘯錛屽錛?br />
springdaotest.java
package org.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import springDao.Sstest;
import springDao.SstestDAO;
public class SpringDaoTest {
public static void main(String a[]){
ApplicationContext cont = new ClassPathXmlApplicationContext("applicationContext.xml");
SstestDAO s = (SstestDAO) cont.getBean("SstestDAO");
SstestDAO s = (SstestDAO) cont.getBean("SstestDAOProxy");
Sstest st = new Sstest();
st.setUsername("spring");
st.setPassword("spring");
s.save(st);
}
}
鍏佺敱浜庢槧灝勪簡涓ゆ錛屾墍浠ヤ綘瑕佸湪hibernate.cfg.xml鏂囦歡涓紝鎶婂師鏉ユ槧灝勭殑鏂囦歡娉ㄨВ鎺夛細
<mapping resource="hibernateDao/Sstest.hbm.xml" />
鍥犱負鐜板湪宸叉湁涓琛岃繖鏍風殑浠g爜錛?br />
<mapping resource="springDao/Sstest.hbm.xml" />
涓冦佸疄鐜癶ibernate spring 浠g悊錛屽姞涓婁笅闈㈢殑浠g爜鍗沖彲錛?br />
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="SstestDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="target">
<ref local="SstestDAO"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
鍦ㄨ繘琛屾祴璇曪紝嫻嬭瘯鏃訛紝榪樻槸鐢ㄥ師鏉ョ殑綾伙紝鍙渶鎶奡stestDAO s = (SstestDAO) cont.getBean("SstestDAO");鍙樻垚
SstestDAO s = (SstestDAO) cont.getBean("SstestDAOProxy");榪欐鐨刡ean鏄敤鐨勪唬鐮佺被瀹炵幇
涓嬮潰鏄畬鏁寸殑浠g爜錛?br />
鍦ㄨ繖涓疄渚嬩腑hibernate鍖呬腑鐨勬枃浠禕aseHibernateDAO. ,HibernateSessionFactory ,IBaseHibernateDAO, Sstest,SstestDAO, Sstest.hbm.xml 錛屽拰鍦?a class="singleposttitle" id="viewpost1_TitleUrl" href="http://www.tkk7.com/qin/archive/2008/10/19/235318.html">涓涓畝鍗曠殑struts錛宧ibernate渚嬪瓙浠ュ強struts,hibernate闆嗘垚涓殑鏂囦歡鏄竴鏍風殑錛屼唬鐮佷竴鏍鳳紝涓嬮潰鏄竴浜涘叾瀹冧唬鐮侊細
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<!-- spring dao -->
<bean id="SstestDAO" class="springDao.SstestDAO">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- hibernate 3 浜嬪姟浠g悊 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="SstestDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="target">
<ref local="SstestDAO"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>
嫻嬭瘯綾伙細SpringDaoTest.java
package org.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import springDao.Sstest;
import springDao.SstestDAO;
public class SpringDaoTest {
public static void main(String a[]){
ApplicationContext cont = new ClassPathXmlApplicationContext("applicationContext.xml");
//SstestDAO s = (SstestDAO) cont.getBean("SstestDAO");
//浠g悊綾?br />
SstestDAO s = (SstestDAO) cont.getBean("SstestDAOProxy");
Sstest st = new Sstest();
st.setUsername("spring");
st.setPassword("spring");
s.save(st);
}
}
Sstest.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="springDao.Sstest" table="sstest" schema="dbo" catalog="manager">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="increment" />
</id>
<property name="username" type="java.lang.String">
<column name="username" length="10" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="20" />
</property>
</class>
</hibernate-mapping>
SstestDAO.java
package springDao;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class SstestDAO extends HibernateDaoSupport {
private static final Log log = LogFactory.getLog(SstestDAO.class);
// property constants
public static final String USERNAME = "username";
public static final String PASSWORD = "password";
protected void initDao() {
// do nothing
}
public void save(Sstest transientInstance) {
log.debug("saving Sstest instance");
System.out.println("Ok");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
System.out.print("save Ok");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
public void delete(Sstest persistentInstance) {
log.debug("deleting Sstest instance");
try {
getHibernateTemplate().delete(persistentInstance);
log.debug("delete successful");
} catch (RuntimeException re) {
log.error("delete failed", re);
throw re;
}
}
public Sstest findById(java.lang.Integer id) {
log.debug("getting Sstest instance with id: " + id);
try {
Sstest instance = (Sstest) getHibernateTemplate().get(
"springDao.Sstest", id);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
public List findByExample(Sstest instance) {
log.debug("finding Sstest instance by example");
try {
List results = getHibernateTemplate().findByExample(instance);
log.debug("find by example successful, result size: "
+ results.size());
return results;
} catch (RuntimeException re) {
log.error("find by example failed", re);
throw re;
}
}
public List findByProperty(String propertyName, Object value) {
log.debug("finding Sstest instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from Sstest as model where model."
+ propertyName + "= ?";
return getHibernateTemplate().find(queryString, value);
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}
public List findByUsername(Object username) {
return findByProperty(USERNAME, username);
}
public List findByPassword(Object password) {
return findByProperty(PASSWORD, password);
}
public List findAll() {
log.debug("finding all Sstest instances");
try {
String queryString = "from Sstest";
return getHibernateTemplate().find(queryString);
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}
public Sstest merge(Sstest detachedInstance) {
log.debug("merging Sstest instance");
try {
Sstest result = (Sstest) getHibernateTemplate().merge(
detachedInstance);
log.debug("merge successful");
return result;
} catch (RuntimeException re) {
log.error("merge failed", re);
throw re;
}
}
public void attachDirty(Sstest instance) {
log.debug("attaching dirty Sstest instance");
try {
getHibernateTemplate().saveOrUpdate(instance);
log.debug("attach successful");
} catch (RuntimeException re) {
log.error("attach failed", re);
throw re;
}
}
public void attachClean(Sstest instance) {
log.debug("attaching clean Sstest instance");
try {
getHibernateTemplate().lock(instance, LockMode.NONE);
log.debug("attach successful");
} catch (RuntimeException re) {
log.error("attach failed", re);
throw re;
}
}
public static SstestDAO getFromApplicationContext(ApplicationContext ctx) {
return (SstestDAO) ctx.getBean("SstestDAO");
}
}
Sstest.java
package springDao;
public class Sstest implements java.io.Serializable {
// Fields
private Integer id;
private String username;
private String password;
// Constructors
/** default constructor */
public Sstest() {
}
/** full constructor */
public Sstest(String username, String password) {
this.username = username;
this.password = password;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">sa</property>
<property name="connection.url">
jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=manager
</property>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<property name="myeclipse.connection.profile">
com.microsoft.jdbc.sqlserver.SQLServerDriver
</property>
<property name="connection.password">wq</property>
<property name="connection.driver_class">
com.microsoft.jdbc.sqlserver.SQLServerDriver
</property>
<!-- <mapping resource="hibernateDao/Sstest.hbm.xml" /> -->
<!-- 浣跨敤springdao -->
<mapping resource="springDao/Sstest.hbm.xml" />
</session-factory>
</hibernate-configuration>
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for Register1Form form</title>
</head>
<body>
<html:form action="/register1">
password : <html:password property="password"/><html:errors property="password"/><br/>
username : <html:text property="username"/><html:errors property="username"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>
Register1Action.java
package com.yourcompany.struts.action;
import hibernateDao.Sstest;
import hibernateDao.SstestDAO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Transaction;
import com.yourcompany.struts.form.Register1Form;
public class Register1Action extends Action {
//鏁版嵁dao
SstestDAO sd;
public Register1Action() {
// TODO Auto-generated constructor stub
setSd(new SstestDAO());
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
Register1Form register1Form = (Register1Form) form;// TODO Auto-generated method stub
//杈撳嚭瀹㈡埛绔殑鐢ㄦ埛鍚?br />
response.setCharacterEncoding("GB2312");
System.out.println("register1Form.name\t"+register1Form.getUsername());
/*
* 鏁版嵁搴撴搷浣?br />
* */
Sstest st = new Sstest();
st.setUsername(register1Form.getUsername());
st.setPassword(register1Form.getPassword());
//dao瀵硅薄
SstestDAO sd = getSd();
Transaction tran = sd.getSession().beginTransaction(); //寮濮嬩簨鍔?br />
sd.save(st);
tran.commit();
//璇鋒眰杞彂鍒皊uccess
return mapping.findForward("success");
}
//鏁版嵁dao錛実et錛宻et鏂規硶
public void setSd(SstestDAO sd) {
this.sd = sd;
}
public SstestDAO getSd() {
return sd;
}
}
Register1Form.java
package com.yourcompany.struts.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
this.username = "qin";
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
濡傛灉浣犺寰椾綘鐨勪唬鐮佽嚜鍔ㄧ敓鎴愭湁闂鐨勮瘽錛屼綘鍙互鍙傝冧笅鍒椾唬鐮?/p>
BaseHibernateDAO.java
package hibernateDao;
import org.hibernate.Session;
public class BaseHibernateDAO implements IBaseHibernateDAO {
public Session getSession() {
return HibernateSessionFactory.getSession();
}
}
HibernateSessionFactory.java
package hibernateDao;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
public class HibernateSessionFactory {
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
static {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
public static Configuration getConfiguration() {
return configuration;
}
}
IBaseHibernateDAO.java
package hibernateDao;
import org.hibernate.Session;
/**
* Data access interface for domain model
* @author MyEclipse Persistence Tools
*/
public interface IBaseHibernateDAO {
public Session getSession();
}
Sstest.java
package hibernateDao;
ublic class Sstest implements java.io.Serializable {
// Fields
private Integer id;
private String username;
private String password;
// Constructors
/** default constructor */
public Sstest() {
}
/** full constructor */
public Sstest(String username, String password) {
this.username = username;
this.password = password;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
SstestDAO.java
package hibernateDao;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.Query;
import org.hibernate.criterion.Example;
public class SstestDAO extends BaseHibernateDAO {
private static final Log log = LogFactory.getLog(SstestDAO.class);
// property constants
public static final String USERNAME = "username";
public static final String PASSWORD = "password";
public void save(Sstest transientInstance) {
log.debug("saving Sstest instance");
try {
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
public void delete(Sstest persistentInstance) {
log.debug("deleting Sstest instance");
try {
getSession().delete(persistentInstance);
log.debug("delete successful");
} catch (RuntimeException re) {
log.error("delete failed", re);
throw re;
}
}
public Sstest findById(java.lang.Integer id) {
log.debug("getting Sstest instance with id: " + id);
try {
Sstest instance = (Sstest) getSession().get("hibernateDao.Sstest",
id);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
public List findByExample(Sstest instance) {
log.debug("finding Sstest instance by example");
try {
List results = getSession().createCriteria("hibernateDao.Sstest")
.add(Example.create(instance)).list();
log.debug("find by example successful, result size: "
+ results.size());
return results;
} catch (RuntimeException re) {
log.error("find by example failed", re);
throw re;
}
}
public List findByProperty(String propertyName, Object value) {
log.debug("finding Sstest instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from Sstest as model where model."
+ propertyName + "= ?";
Query queryObject = getSession().createQuery(queryString);
queryObject.setParameter(0, value);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}
public List findByUsername(Object username) {
return findByProperty(USERNAME, username);
}
public List findByPassword(Object password) {
return findByProperty(PASSWORD, password);
}
public List findAll() {
log.debug("finding all Sstest instances");
try {
String queryString = "from Sstest";
Query queryObject = getSession().createQuery(queryString);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}
public Sstest merge(Sstest detachedInstance) {
log.debug("merging Sstest instance");
try {
Sstest result = (Sstest) getSession().merge(detachedInstance);
log.debug("merge successful");
return result;
} catch (RuntimeException re) {
log.error("merge failed", re);
throw re;
}
}
public void attachDirty(Sstest instance) {
log.debug("attaching dirty Sstest instance");
try {
getSession().saveOrUpdate(instance);
log.debug("attach successful");
} catch (RuntimeException re) {
log.error("attach failed", re);
throw re;
}
}
public void attachClean(Sstest instance) {
log.debug("attaching clean Sstest instance");
try {
getSession().lock(instance, LockMode.NONE);
log.debug("attach successful");
} catch (RuntimeException re) {
log.error("attach failed", re);
throw re;
}
}
}
Sstest.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="hibernateDao.Sstest" table="sstest" schema="dbo" catalog="manager">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="increment" />
</id>
<property name="username" type="java.lang.String">
<column name="username" length="10" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="20" />
</property>
</class>
</hibernate-mapping>
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="register1Form" type="com.yourcompany.struts.form.Register1Form" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="register1Form"
input="/form/register1.jsp"
name="register1Form"
path="/register1"
scope="request"
type="com.yourcompany.struts.action.Register1Action">
<forward name="failed" path="/error.jsp" />
<forward name="success" path="/success.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>
type Status report
message /testSpringStruts2/
description The requested resource (/testSpringStruts2/) is not available.
package org.test.service.impl;
import org.test.service.LoginService;
public class LoginServiceImpl implements LoginService {
public boolean isLogin(String username, String password) {
//鍒ゆ柇鐢ㄦ埛鎵浠ヨ緭鍏ョ殑鏁版嵁鏄惁涓篻ao,qin錛屽鏋滄槸鍒欑櫥闄嗘垚鍔?鍚﹀垯澶辮觸
// TODO Auto-generated method stub
if(username.equals("gao") && password.equals("qin")){
return true;
}
return false;
}
}
LoginAction.java
package org.test.struts2Action;
import org.test.service.LoginService;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class LoginAction extends ActionSupport {
private String username;
private String password;
@SuppressWarnings("unused")
private LoginService loginService;
@Override
public String execute() throws Exception {
if(loginService.isLogin(username, password)){
return SUCCESS;
}
return INPUT;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setLoginService(LoginService loginService) {
this.loginService = loginService;
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="loginService" class="org.test.service.impl.LoginServiceImpl"></bean>
<bean id="loginAction" class="org.test.struts2Action.LoginAction" scope="prototype">
<property name="loginService">
<ref local="loginService"/>
</property>
</bean>
</beans>
struts.xml
<?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>
<constant name="struts.objectFactory" value="spring"/>
<package name="qin" namespace="/" extends="struts-default">
<action name="login" class="loginAction">
<result name="success">/result.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
web.xml
<?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">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoader</listener-class>
</listener>
</web-app>
index.jsp
<%@ page language="java" pageEncoding="GB2312"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<h2>鐢ㄦ埛鐧婚檰</h2>
<s:form action="login.action" method="post">
<s:textfield name="username" label="鐢ㄦ埛鍚?></s:textfield>
<s:password name="password" label="瀵嗙爜"></s:password>
<s:submit value="鐧婚檰" name="sure"></s:submit>
</s:form>
</body>
</html>
result.jsp
<%@ page language="java" pageEncoding="GB2312"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<h2>鐢ㄦ埛淇℃伅</h2>
鐢ㄦ埛鍚嶏細<s:property value="username" escape="request"/>
瀵嗙爜錛?{requestScope.password }
</body>
</html>
璇ユ妸淇敼web.xml錛屾妸鍘熸潵鐨?br />
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
鏀逛負
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
鑰屼笂浼犻〉闈㈣皟鐢ㄦ椂鐩存帴鐢ㄦ枃浠跺悕璋冪敤錛堝upload.jsp錛夈俿truts2鍙鐞?*.action 鐨勮姹傘?br />
鎴栬?br />
<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>
鍘繪帀涔熻
鑻ユ槸java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException閿欒
閭e氨鏈夊彲鑳芥槸瀵煎寘鐨勯棶棰橈紝鑻ョ敤鐨勬槸鍙沖嚮欏圭洰錛岄夋嫨灞炴э紝鐒跺悗瀵煎叆鐩稿簲鐨勫寘錛屽氨鏈夊彲鑳藉嚭鏄炬綾葷殑閿欒錛岃В鍐蟲柟娉曟槸錛氭妸commons-fileupload-1.2.1.jar,commons-io-1.4.jar澶嶅埗鍒板埌WEB-INF涓嬬殑lib鐩綍涓紝铏界劧鏁堟灉鏄竴鏍鳳紝浣嗕笉浼氬嚭閿欎簡
闄?
upload.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'upload.jsp' starting page</title>
</head>
<body>
<form action="upload" method="post" enctype="multipart/form-data">
鐢ㄦ埛鍚嶏細<input type="text" name="username"><br>
瀵嗙爜錛?lt;input type="password" name="password"><br>
鏂囦歡1:<input type="file" name="file1"><br>
鏂囦歡2:<input type="file" name="file2"><br>
<input type="submit" value="鎻愪氦"><br>
</form>
</body>
</html>
UploadServlet.java
package com.test.servlet1;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
DiskFileItemFactory factory = new DiskFileItemFactory();
String path = request.getRealPath("/upload");
// 璁劇疆浼犺疆杈撴枃浠剁殑澶у皬錛屽綋灝忎簬1024鏃訛紝鎶婃枃浠跺瓨鍦ㄥ吂鐩樹笂
factory.setRepository(new File(path));
factory.setSizeThreshold(1024 * 1024);
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> list = upload.parseRequest(request);
for(FileItem item : list){
if(item.isFormField()){
String name = item.getFieldName();
String value = item.getString("GB2312");
request.setAttribute(name, value);
}else{
String name = item.getFieldName();
String value = item.getName();
int start = value.lastIndexOf("\\");
String fileName = value.substring(start+1);
request.setAttribute(name, fileName);
//item.write(new File(path,fileName));
OutputStream os = new FileOutputStream(new File(path,fileName));
InputStream is = item.getInputStream();
// 灝嗘枃浠秈s鍐欏埌os閲?br />
byte[] buffer = new byte[400];
int lenght = 0 ;
while((lenght = is.read(buffer ))>0){
os.write(buffer,0,lenght);
}
os.close();
is.close();
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
System.out.println("鏂囦歡涓婁紶鍑洪敊"+e.getMessage());
e.printStackTrace();
}
request.getRequestDispatcher("upload/result.jsp").forward(request, response);
}
}
result.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'result.jsp' starting page</title>
</head>
<body>
鐢ㄦ埛鍚?${requestScope.username }
瀵嗙爜:${requestScope.password }
鏂囦歡1:${requestScope.file1 }
鏂囦歡2:${requestScope.file2 }
</body>
</html>
銆銆OSGi(鍩轟簬Java鐨勫姩鎬佹ā鍨嬭鑼?
銆銆娉細OSGi(Open Service Gateway Initiative)鎸嘜SGi Alliance緇勭粐鍒跺畾鐨勪竴涓熀浜嶫ava璇█鐨勬湇鍔?涓氬姟)瑙勮寖鈥斺擮SGi鏈嶅姟騫沖彴(Service Platform)銆?璇ヨ鑼冨拰鏍稿績閮ㄥ垎鏄竴涓鏋?錛屽叾涓畾涔変簡搴旂敤紼嬪簭鐨勭敓鍛藉懆鏈熸ā寮忓拰鏈嶅姟娉ㄥ唽銆傝繖涓鏋跺疄鐜頒簡涓涓紭闆呫佸畬鏁村拰鍔ㄦ佺殑緇勪歡妯″瀷銆傚簲鐢ㄧ▼搴?縐頒負bundle)鏃犻渶閲嶆柊寮曞鍙互琚繙紼嬪畨瑁呫佸惎鍔ㄣ佸崌綰у拰鍗歌澆(鍏朵腑Java鍖?綾葷殑綆$悊琚緇嗗畾涔?銆侫PI涓繕瀹氫箟浜嗚繍琛岃繙紼嬩笅杞界鐞嗘斂絳栫殑鐢熷懡鍛ㄦ湡綆$悊銆傛湇鍔℃敞鍐屽厑璁竍undles鍘繪嫻嬫柊鏈嶅姟鍜屽彇娑堢殑鏈嶅姟錛岀劧鍚庣浉搴旈厤鍚堛?/p>
銆銆Java鍐呭浠撳簱錛屾渶鏃╀簬2002騫?鏈堢敱JCP鍙戝竷
銆銆娉細JCP(Java Community Process) 鏄竴涓紑鏀劇殑鍥介檯緇勭粐錛屼富瑕佺敱Java寮鍙戣呬互鍙婅鎺堟潈鑰呯粍鎴愶紝鑱岃兘鏄彂灞曞拰鏇存柊Java鎶鏈鑼冦佸弬鑰冨疄鐜?RI)銆佹妧鏈吋瀹瑰寘(TCK)銆侸CP緇存姢鐨勮鑼冨寘鎷琂2ME銆丣2SE銆丣2EE錛孹ML錛孫SS錛孞AIN絳夈傜粍緇囨垚鍛樺彲浠ユ彁浜CR(Java SpECification RequESts)錛岄氳繃鐗瑰畾紼嬪簭浠ュ悗錛岃繘鍏ュ埌涓嬩竴鐗堟湰鐨勮鑼冮噷闈€?/p>
銆銆Google Web Toolkit(鏈鏃╁彂甯冧簬2006騫?鏈?
銆銆娉細GWT(Google Web Toolkit) 鏄?Google 鎺ㄥ嚭鐨勪竴涓紑鍙?Ajax 搴旂敤鐨勬鏋訛紝瀹冩敮鎸佺敤 Java 寮鍙戝拰璋冭瘯 Ajax 搴旂敤銆?/p>
銆銆Groovy(鏈鏃╁彂甯冧簬2004騫?鏈?
銆銆娉細Groovy鏄竴縐嶉潰鍚戝璞$殑紼嬪簭璁捐璇█錛屼綔涓篔ava紼嬪簭璁捐璇█鐨勪竴縐嶅彲閫夋浛浠e搧錛屽茍澧炲姞浜哖ython錛孯uby鍜孲malltalk涓殑涓浜涚壒鎬с?/p>
銆銆浜戦浘璁$畻(鐢ㄤ簬铏氭嫙鏈嶅姟鍣ㄧ殑璁捐鐞嗗康錛屾垨鏃犻渶EJB鐨勫垎甯冨紡璁$畻)
銆銆娉細“浜戦浘璁$畻”鐨勮嫳鏂囧嵆Cloud Computing銆傝嚜璋鋒瓕鍙戝睍璧鋒潵涔嬪悗錛屾瀬澶ц妯$殑鏈嶅姟鍣ㄩ泦涓湪涓璧鳳紝緇熶竴綆$悊錛屽艦鎴愪簡“浜戦浘璁$畻”(“Cloud Computing”)鐨勭墿璐ㄥ熀紜銆?#8220;浜戦浘璁$畻”鏄ぞ浼氳綆楄兘鍔涚殑澶ч泦涓紝涔熸槸鎵璋?#8220;SaaS”鐨勫瑙傚熀紜銆?/p>
銆銆鏈夎叮鐨勬槸錛屽叾涓湁鍑犵鎶鏈凡緇忔垚鐔燂紝鎴栬呰鏄?#8220;鑰?#8221;浜嗭紝騫朵笖姝e湪鍏惰鎺ㄨ崘搴旂敤鐨勯」鐩腑鏈夋垚鐔熺殑搴旂敤銆傚綋鐒訛紝榪欎簲縐嶆妧鏈兘寰堟湁浠峰箋侽SGi鏄疎clipse鐨勫緩妯$郴緇燂紝Goovry鍥犲叾姝e紡鐨勮鑼冭鏄庡拰棰戠箒鐨勬敼榪涚増鍙戝竷璧㈠緱鏀寔銆侴WT涔熺畻鏄垚鐔熺ǔ瀹氾紝浜戦浘璁$畻姝e湪鍙楀埌鏇翠負騫挎硾甯傚満鐨勬帴鍙椼?/p>
銆銆JRC鍜屼簯闆捐綆楁槸鏈榪戞墠琚箍娉涙帴鍙楃殑鎶鏈紝浣嗘槸鍘傚晢姝e湪鍒╃敤绔炰簤鍜屽晢涓氬叧緋葷寧鍙栨敮鎸佹潵鍙戝竷鐩稿叧鐨勪駭鍝?姣斿GridGain錛孏igaspaces錛屽拰Terracotta)錛岃屾湁鐨勫巶鍟嗚繕姝e湪瀵規榪涜絳栧垝(TSS璁″垝鍦═SSJS2008鍙戝竷JCR鐩稿叧鐨勫0鏄?銆?/p>
銆銆榪欐槸涓浠藉緢鏈夎叮鐨勫垪琛ㄣ備綘璁や負搴旇鍦?008瀛︿範鍝嚑縐岼ava鎶鏈憿?鍝簺鎶鏈幇鍦ㄦ鍦ㄥ睍闇插ご瑙掑茍鎴愪負浣犱互鍚庡涔犵殑鏂瑰悜鍛?(http://developer.e800.com.cn/articles/2008/87/1218074549696_1.html)