|
该用户从未签到
|
- struts2、hibernate、spring所需jar包 . W2 P! @2 ~- V# m: e
-
0 r. d% A! M5 H) J - struts-core-2.x.x.jar ----struts核心包 # h+ t. [ @" C5 v: |
- xwork-core-2.x.x.jar -----身体ruts在其撒很难过构建
$ a1 O. o4 u" w" D* k - ognl-2.6.x.jar ----对象导航语言 + L% b6 y4 y8 I- s# I
- freemarker-2.3.x.jar ------struts2的ui标签的模板使用
; Y1 j# r5 s/ z- x% Z% _ - commons-fileupload-1.2.x.jar ----文件上传组件 2.1.6版本后需加入此文件 3 [% ?0 [+ }+ x6 V2 G& q
- struts-spring-plugin-2.x.x.jar ---用于struts2继承spring的插件 ! c) m; a# L) ?7 I4 j
-
! Z# z, i% w- C' j, A1 e. F - hibernate核心安装包下的(下载路径:http://www.hibernate.org/ ,点击Hibernate Core 右边的download) $ n6 m' o4 v& j' m) _) I9 E
- hibernate2.jar ( Y% F O' } Z: z1 ?6 ^
- lib\bytecode\hibernate-cglib-repack-2.1_3.jar 0 S. L4 b$ _# I2 U* W
- lib\required\*.jar ' o2 z6 s6 A- E
- hibernate安装包下的(下载路径:http://www.hibernate.org/;点击Hibernate Annotations 右边的下载) 2 y1 q ~6 R# v$ Y2 e* {' {5 t
- hibernate-annotations.jar ; b5 t" v; j [! C8 C7 @6 R! ~
- lib\ejb3-persistence.jar、hibernate-commons-annotations.jar
% O" s. t& N% R& p1 g - hibernate针对JPA的实现包(下载路径:http://www.hibernate.org/ ,点击Hibernate Entitymanager右边下载)5 A; L1 j& ?$ D# K: @) H
- hibernate-entitymanager.jar 2 @2 @/ T7 [" h8 R2 c+ G
- lib\test\log4j.jar、 slf4j-log4j12.jar / E2 d7 B, h( _2 L
-
( z9 V) Z, y4 a - spring安装包下的
) v$ T1 \5 }7 Z) Z" e/ X - dist\spring.jar " G4 V1 u7 F9 |/ {
- lib\c3p0\c3p0-0.9.1.2.jar
7 I2 \2 I. P$ ~" g) ? - lib\aspecti\aspectjweaver.jar
9 a3 m8 w" g2 c7 `9 Y# u; T - aspectjrt.jar
4 s2 Z$ \0 H% G1 j - lib\colib\cglib-nodep-2.1_3.jar
- G U3 w1 s, | - lib\j2ee\common-annotations.jar - \) B* v. d8 C' a" i
- vlib\log4j\log4j-1.2.15.jar ' V8 f& } v0 Z3 x8 A: K
- lib\jakarta-commons\commons_loggin.jar
% |, g0 w3 N7 A - 9 Y+ M' {- Y- }6 F# l/ d
- 数据库驱动包 . n) ?1 \% H6 Z- N1 X
- % z- e. \- m- d& {8 P
- : ?! ^7 L* Y5 G* ]# B. o0 i9 m. [
-
# b7 F3 B: T3 w; B$ X; O# } - 引用
, b: V, Q% K9 ~7 v9 C -
! Y9 ]7 A- J8 w" s2 O% y6 E -
; r2 o6 Z4 V! T3 i+ D - 创建mysql数据库ssh 设置编码为utf-8 语句:
) p& _# r& b6 n2 m - create database ssh character set 'utf8' collate 'utf8_general_ci'
; |, A. c( V, a# \ - 4 r' o! R( z' |; T; I
-
, O# f6 L1 W/ s6 u! J - " ]8 ]2 l4 I9 B6 G$ F% D z
- 引用
8 m* M$ a9 G9 S - W9 v+ b: p3 M! u$ ?3 e& z R) n
- $ g( Z6 M6 G9 X
- 1.先整合spring和hibernate
0 O2 C0 u4 D- v* R6 F% E3 i! D- l2 V$ t - *将spring和hibernate的jar包放入lib下; 0 I* d0 l1 x4 p! F" M3 M
- *创建spring的beans.xml配置文件 2 `" G( w! K8 H1 U+ S& b
- 7 _0 b6 Q b/ _; ]4 t
- ; ? d8 g) t/ q' `: B
- ' P+ S6 X4 Q# `$ ]- u5 d) F; k; j
- java代码 / Q* h) O7 R9 P, S) R
- 1.<?xml version="1.0" encoding="UTF-8"?>
8 O1 u$ q' L$ W( N- ~ - 2.<beans xmlns="http://www.springframework.org/schema/beans"
' e- ]* Q4 p# W0 ?' H6 t6 _* W - 3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
9 @4 U+ R' h2 }& S% z - 4. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 2 j0 N3 i. ?/ O; n1 R
- 5. xsi:schemaLocation="http://www.springframework.org/schema/beans
- S0 C( }6 o; k$ b* M- @ - 6. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
, d+ U* o' Z. N4 }+ D: e5 s w - 7. http://www.springframework.org/schema/context ( q0 O! |, K# O& v; ]7 t+ E
- 8. http://www.springframework.org/schema/context/spring-context-2.5.xsd ! @4 |" t' U7 o! M5 I
- 9. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
; i3 E) R; D* M Y- S - 10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
6 A( s2 q' d' \ - 11. % M: o# t$ q& |
- 12. <!-- 将bean交由spring管理可以 用<bean></bean>和扫描加注 --> ; N6 v0 F- D. |" k3 S8 H0 b2 P* x
- 13. <!-- ! Y% D; W c2 z, _# s
- 14. 扫描该包及该包下的子包 ( W5 f/ g' C6 E& D- K
- 15. --> 1 S2 D: c" p. { a6 g0 P
- 16. <context:component-scan base-package="com.yss"></context:component-scan>
5 M# F* @! ~6 w' J% D& {9 d - 17.
- i0 j) H a$ Z" j; U' e - 18.
, ~$ Q+ U0 I4 T5 ~ - 19. <!-- 集成hibernate sessionFactory单例模式 线程安全 创建耗内存--> . r+ X8 R2 X* F1 l" F2 G* r3 B
- 20. <!-- 将hibernate的事务也交由spring管理 -->
4 C* c F! o* X) l - 21. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 4 [) A7 Z2 R: A, A( |) H
- 22. destroy-method="close"> 8 V0 v3 h3 n* ^" u8 h; d
- 23. <property name="driverClass" value="org.gjt.mm.mysql.Driver" />
$ ]' U& n7 C# J* l1 V - 24. <property name="jdbcUrl" % [6 z- h# k+ b3 r
- 25. value="jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterEncoding=UTF-8" /> 7 w1 E$ E% }. A' _: n/ T
- 26. <property name="user" value="root" />
3 K0 U p. o$ F- W' q- c5 ^ - 27. <property name="password" value="root" /> 6 P- g& {5 V" ^3 T7 }, E L( r
- 28. <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 --> 7 v! e* d$ V5 I5 j# @" h# ?3 D) O6 {
- 29. <property name="initialPoolSize" value="1" />
9 Q& q* Q5 {! q3 } - 30. <!--连接池中保留的最小连接数。-->
7 I) Z. X9 `# [* k3 } - 31. <property name="minPoolSize" value="1" /> " k6 A) Z$ I' S
- 32. <!--连接池中保留的最大连接数。Default: 15 --> ; k& Y0 C$ S/ X8 m) X3 G2 V: ^
- 33. <property name="maxPoolSize" value="300" />
1 M2 ^, y# l" i( K/ A3 i; _5 t - 34. <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
" v/ q5 a+ B) Q% P) s+ s7 E3 f! u - 35. <property name="maxIdleTime" value="60" /> - t3 f- V- r$ Q, P3 j2 K0 C
- 36. <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --> % G/ ~7 P% u! R: g
- 37. <property name="acquireIncrement" value="5" />
& k) S+ Q. |$ _: `. o& `( J, C0 b - 38. <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
6 Q3 Q/ W# V% X! u! Q% I: Y - 39. <property name="idleConnectionTestPeriod" value="60" /> " l! F6 S2 n7 X1 S! p% F& g
- 40. </bean> 6 ~! g7 D% Z% s1 o! V. M
- 41.
- G" @( J. I7 d& r' N - 42. <bean id="sessionFactory"
/ r0 j" [" J! X- z3 {/ O8 A5 \ - 43. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
, {1 l% q2 x& }! j - 44. <property name="dataSource" ref="dataSource" /> 7 E8 H9 J- F3 _8 o
- 45. <property name="mappingResources"><!-- 放置hibernate的配置文件 -->
6 T d, f+ Z3 Y) V* Y F& |7 p2 L - 46. <list> 9 x6 l; W# S$ w$ U
- 47. <value>com/yss/bean/Employee.hbm.xml</value>
3 x9 z' o: P5 }# t - 48. </list> ( t+ i( S/ N. R( j/ X5 T% @( p
- 49. </property>
" k1 H* q1 f. V - 50. <property name="hibernateProperties">
2 c# H0 X, s! k - 51. <value> 0 k8 L! g6 _/ x- n( z
- 52. hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
8 r+ w. r$ F F- ~' V( W3 X( B8 p, Y - 53. hibernate.hbm2ddl.auto=update
9 P% Z- i7 r6 D; p1 O7 K3 e - 54. hibernate.show_sql=true
1 s% v, y; C" }3 i) Q8 o - 55. hibernate.format_sql=false
! O' V; p* ~- R: p2 t. b `+ O: r - 56. </value>
0 P' Q* ^/ v* h - 57. </property> 9 |" P+ ^$ }) ~8 f, {* p
- 58. </bean> ) `2 z( t6 i& R5 [
- 59. 6 t3 Q! v1 z$ L! t
- 60. <!--hibernate事务管理器配置-->
, x, u! }) R. h6 ` - 61. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> . h F; ~; G+ o" g$ t3 I
- 62. <property name="sessionFactory" ref="sessionFactory"></property> * ~/ z9 o g2 Q4 S. V0 ^
- 63. </bean> ' b0 E/ f6 _6 `, G+ L! X- Z
- 64.
( M [4 n& K% a1 {% k0 ]; t( d - 65. <!--spring可以用xml和注解来配置事务 声明 -->
$ l+ ]" K# C9 G' c - 66. <tx:annotation-driven transaction-manager="transactionManager"/> i8 R( O/ m) a0 d4 `$ Y
- 67.</beans> $ F' k7 h1 _; l, F2 w
- 3 g. m& @7 M' X" ?3 U
- *配置hibernate的model.hbm.xml和创建model类 % K; b% r* m* E7 T- C
- *创建service O$ ] j6 g+ c' k" F* [7 a$ U6 ~+ ~
- service接口:
8 v/ j. `) j" h5 _3 W -
8 x- ?6 _, f* a O3 d- l0 E -
. ^: N7 S0 f7 l0 Q, ~" g -
5 A& m* @# _0 Y" i' B* K7 P - Java代码
! s* g! C8 [8 A" R" b' e3 E - 1.public interface EmployeeService { 2 X7 k5 m7 I4 G
- 2. public boolean save(Employee employee);
1 {% x n; A" f4 i# | - 3. public boolean update(Employee employee); ! h- u8 v+ s+ y2 P" d
- 4. public Employee find(String username); 1 b5 [7 z' E& i/ z H) Q4 R: y- a P; R
- 5. public boolean delete(String... username);//表示可变参数
+ A: K6 @( ^/ w. Y - 6. public List<Employee> findAll();
N' R7 }4 ]4 x. ?- l8 G9 z# u - 7.} 7 i' U. F' x, a8 Z( o
- . F/ i. m* i/ W/ r( M+ I$ [& ?
- service实现类: 5 {; [$ r5 I) ^: d/ F% S/ V
-
2 ]0 K. N. [1 u! n" P2 g -
8 h2 S) c+ y: _+ @0 R+ x2 ~- N -
! }5 m, v) K/ D! L* Y! n - Java代码
$ H6 m6 {( \& ] - 1.import java.util.List;
. ~; L/ A% m3 J' C' V - 2.
. p9 z9 \ S/ ~0 D: p' S) D - 3.import javax.annotation.Resource;
7 U! S. i; T" r* a. g' O: |* `) } - 4.
" D' f3 X& ]# n/ z' x1 }! {/ R - 5.import org.apache.log4j.Logger;
( v) p4 o% w1 `) Y: l3 r - 6.import org.hibernate.SessionFactory; # d/ m0 o9 p/ [2 | L# n; g
- 7.import org.springframework.stereotype.Service; + e3 _; P4 W- z: n
- 8.import org.springframework.transaction.annotation.Propagation;
# S% a) h$ r6 c8 T3 i* s - 9.import org.springframework.transaction.annotation.Transactional; & v' Z# f$ J1 z$ \7 Z0 @
- 10. / Q8 S: s: A4 w7 O& z+ t$ H
- 11.import com.yss.bean.Employee;
7 d8 B* o7 ~, T; |) j; O4 X, c - 12.import com.yss.service.EmployeeService; / Y6 W4 m7 a: |2 M
- 13.
7 l, B2 i. b2 u+ {" D8 x8 Z% M - 14./** & D( M! K6 E( W! h9 |# U4 z
- 15. * @author qing 默认bean名称 employeeServiceBean
0 k- o5 @. c4 f5 @ | - 16. *@Service @Transactional 注入service和开启事务 $ r; R% j/ g7 L) @: @
- 17. */
1 S& K. Q3 Y& w9 F- e& S - 18.@Service % B4 V6 h/ O v, ~! o; A
- 19.@Transactional
& D0 w/ i/ L! B3 E& ?" R - 20.public class EmployeeServiceBean implements EmployeeService { : c; r. `& A0 l4 z. ~- N4 H g
- 21. private static Logger logger = Logger.getLogger(Employee.class);
; _. @9 w' O( ?! K8 U& N2 h - 22. /**
3 y: E( p+ | R" b9 B' V - 23. * 注入sessionFactory
" s/ L0 a/ P) i( O: N - 24. */ + W! Z: u, o$ `$ Y. N& l/ j, i0 e+ \8 ?
- 25. @Resource SessionFactory factory;
' Y* d( m8 Y4 ]$ E$ C/ E( x - 26.
- t+ @9 c) z7 w0 {% A- @ - 27. public boolean delete(String... usernames) { % ~9 m+ w) x7 g
- 28. try {
8 k( R8 a& X# Z - 29. for (String username : usernames) {
# @; ]! G" g& [ O, b( Z! f - 30. factory.getCurrentSession().delete( 2 Q7 l9 W5 C+ E0 K2 I5 j
- 31. factory.getCurrentSession().load(Employee.class, + f+ I) y" k0 g/ n6 b
- 32. username)); # t/ k9 n! P Z+ `! w; N
- 33. } 8 G" s+ p; m. R1 q$ K4 r: d& q
- 34. } catch (Exception e) { / E z8 a! t- T0 \) {) D, k ^
- 35. logger.error(e.getMessage());
4 d& E( X9 y! z& [; L" M - 36. return false;
* N- T9 x. s' q! X - 37. } ' Y( c- `1 ~8 y& l5 n* V
- 38. return true; 0 Q' G. Y _$ T- k& e. A$ r
- 39. }
p( y S% b9 L* B4 L& e ]3 E+ B/ N - 40. ' V. X+ F8 v: E! b G
- 41. /* - Y) o- Y$ H2 z# t8 L
- 42. * (non-Javadoc)
8 y9 y$ b: _) w) Y2 q/ H- ? - 43. * 7 G8 `; L* `1 W
- 44. * @see com.yss.service.EmployeeService#find(com.yss.bean.Employee)
: \6 f+ r% N3 B& S - 45. * 此标注表示不需要事务处理 / J+ u& p& S. G- Q6 o0 H( C9 H7 u
- 46. */ 9 ^0 n @( {) S/ {8 P! N+ [
- 47. @Transactional(propagation = Propagation.NOT_SUPPORTED) 0 e7 W" `+ m8 K% k4 M! }4 c* `
- 48. public Employee find(String username) { / H) @7 |1 J# i
- 49. return (Employee) factory.getCurrentSession().get(Employee.class,
" s! l R$ r+ {; Q* Z; P9 G - 50. username); % d8 \+ J0 i2 `: A$ m+ O
- 51. } : ? z- g9 t! @4 S$ } t
- 52.
9 j. x3 y( n% N - 53. @SuppressWarnings("unchecked") - k3 U, R$ M. r4 `
- 54. @Transactional(propagation = Propagation.NOT_SUPPORTED) $ V' m0 {: }& t7 i2 J7 i8 R% I
- 55. public List<Employee> findAll() { , d n3 e) T& I) r
- 56. return factory.getCurrentSession().createQuery("from Employee emp") 4 r1 ~" H! G# z3 n
- 57. .list(); % a Z) i6 E3 h7 H/ l9 S
- 58. } ( ^* e1 k& t0 o6 Q) A3 X
- 59. ! q# G9 K' e8 T! i" b
- 60. public boolean save(Employee employee) {
* }. O! o; l; [, B/ a* R. ~) G - 61. try { # T1 K% f- S8 y$ o
- 62. factory.getCurrentSession().persist(employee);// .save(employee);//
3 b( v9 [. E9 x& P" B5 r - 63. // 获取已经开好的Session ; m6 k6 F) L4 ? S4 \$ A! d1 h {- e
- 64. } catch (Exception e) {
U* P7 J) X' M- T) |& _ - 65. logger.error(e.getMessage());
1 z" F0 A: r7 ?# ^' F8 \' ? - 66. return false; * _' n& b/ U5 |
- 67. } ; S# I4 H I" k# z2 f) d
- 68. return true;
' X6 ]) T1 \; _, T7 P) ]* w; g - 69. }
9 N$ Z1 ^& t. ?# H5 W8 Q, Y - 70.
2 Y; U. e' W% z. V) j# L - 71. public boolean update(Employee employee) {
: H/ }; E% ~ |1 t+ E, M9 x - 72. try {
. x6 x* g" [7 r' e* K - 73. factory.getCurrentSession().merge(employee);// 类似于saveOrUpdate()方法
$ ^. n- B9 `% r/ g9 X7 @) ^ - 74. } catch (Exception e) {
5 F/ v, L6 H) A" N1 @/ Q8 }5 g- r - 75. logger.error(e.getMessage()); ' i3 f1 a6 D9 Q
- 76. return false; ( G& d7 Z% r J- D7 R# v
- 77. } 8 t- {8 ^2 o( \; N; J8 B- o7 M
- 78. return true; + ?5 X* z1 q9 _+ N
- 79. }
- S3 X& U9 \6 z- q; R - 80.
, N3 y6 d4 W2 @5 t/ F1 Y3 q6 O - 81.}
* ?; s- ^0 O/ u$ g# r1 K - 8 z3 C" S: V- K
- *新建测试类
8 J7 ~( `# ^ y- }; M: ` -
( w) H6 H& _5 X6 C `* b - * m4 X! u6 {0 A: ~/ t
- 4 q$ Z$ Z' f1 Y8 R5 G* z: I9 ~
- Java代码
- q$ X5 Q% Q7 }2 F+ [ - 1.public class EmployeeTest {
2 o% U3 n/ S6 w7 y* `6 C - 2. private static EmployeeService employeeService; $ b4 Y% c; w0 M/ y$ F4 Q6 v
- 3.
/ ]% B2 D6 \8 t0 y - 4. @BeforeClass : d& \, d% ], b* ?+ e
- 5. public static void setUpBeforeClass() throws Exception {
" X1 Z( Z$ U; v& x7 | - 6. try {
# x# M! J# k0 F) c3 `/ Q - 7. ApplicationContext context = new ClassPathXmlApplicationContext( # e( S2 F" b Q! p. y9 m
- 8. "beans.xml"); . _1 a+ ?1 o- q9 l( S9 C. d0 p
- 9. employeeService = (EmployeeService) context . c! r+ k+ s6 W, L3 i) g
- 10. .getBean("employeeServiceBean");
* @4 k4 y* ]) F# d% V - 11. } catch (Exception e) {
: v; K' r0 }/ `) w5 _4 X* { - 12. System.out.println(e.getMessage());
" n+ J& m+ _) U - 13. } ' D/ b7 Y$ Z1 O2 e: G5 [/ `! N0 [
- 14. } " Q O! T. V$ _" x
- 15.
. Q% L9 M3 d& q8 l$ s# N% ] - 16. @Test : s3 q. ?' d- o! ~
- 17. public void createTable() {
3 t$ y2 g, H7 _ - 18. //new ClassPathXmlApplicationContext("beans.xml");
) i- T4 V0 ]( C - 19. };
t! v6 L& F9 x& A4 r - 20. ( I" j e( Q& i# \* u
- 21. @Test
; v: C/ c7 T3 R Y+ @+ R - 22. public void save() {
6 }& W" o; e) G% y, }) e( z; _ - 23. boolean result=employeeService.save(new Employee("long","long"));
+ D9 P; \* B- f1 ^ - 24. if (result) {
& h" D( _" X2 @! p5 D; j( v E5 H3 T - 25. System.out.println("保存成功。。。。。"); 7 B$ Q" b; ?# d1 @
- 26. }else{
# N& d9 b8 N0 e3 d( ~! T7 M/ l - 27. System.out.println("保存出错...."); % F" X3 ^/ x5 w! }) v) F N
- 28. }
- O4 H% X/ h) \' F( }* o* W - 29. }; % m' m3 b; u! {, I$ i1 |6 F
- 30.
! p* m+ D* n) t4 Y6 H - 31. @Test - I3 a+ d0 E8 s6 c/ ~; a8 Q: Q0 g
- 32. public void delete() { . d, C: L4 Z) Y. U( `
- 33. boolean result=employeeService.delete("long"); ' r" v R: h" c# `
- 34. if (result) { : ^9 I$ E6 A) }& a- M
- 35. System.out.println("删除成功。。。。。"); & Q, l6 @' i, A6 a) A9 a
- 36. }else{ 1 D$ M; j7 J. Q: D" L* N1 y/ u* z& |
- 37. System.out.println("删除出错...."); : y1 w* `/ P% p, h
- 38. } : h& ^8 \- y% L* }/ T
- 39. }; |$ c& @' j9 H
- 40. ; q3 G9 w# L+ n* J
- 41. @Test ; F, l! A4 g7 X% [2 s* l s
- 42. public void update() {
: |- S: @! W0 r+ `; t - 43. boolean result=employeeService.update((new Employee("qing","long"))); : ?- s0 N; s/ Q" N9 r
- 44. if (result) {
3 s7 V6 M& g& x0 M# u* g - 45. System.out.println("更新成功。。。。。");
2 w5 ~5 b: L9 D - 46. }else{
8 m. e4 Z& z' G7 z9 n - 47. System.out.println("更新出错....");
$ g" l8 i( M2 u: V" s - 48. } . m) }9 z# g, Y% h: s8 N
- 49. }; ' L% o: Z9 n8 r7 a% {
- 50. # c" m: a( H$ C6 W! M. L( a
- 51. @Test ) _- Y) a6 p; T' x9 X8 q
- 52. public void findAll() {
1 _/ J' Z1 ?% v8 _* N9 B - 53. List<Employee> elist=employeeService.findAll();
; \/ p5 `# x/ T! V! y2 B4 n S - 54. Iterator itor=elist.iterator();
2 U7 \( b: f% \ - 55. while(itor.hasNext()){
9 K P8 L) y7 p& F - 56. Employee emp=(Employee)itor.next();
) C3 Y6 v' ?6 d$ b - 57. System.out.println(emp.getPassword());
0 U6 Z2 y3 o0 ~$ t+ u; X - 58. } ( J2 |. N; M! j7 C6 @3 E3 ]
- 59. }; : x0 ]! Z& r+ ^' k1 C# k& D
- 60.
% E0 V. b" k+ p% E - 61. @Test
) ~% M- N) |! I, f) U# Q) H - 62. public void find(){
; t8 ]/ e- _: @: S - 63. Employee employee=employeeService.find("qing");
# i4 N5 j( S/ _" \0 [ - 64. System.out.println(employee.getPassword()); 0 u+ Y" p- l6 t" B0 {/ ^. N
- 65. } 2 G) X) @- L5 }
- 66.} ( Q* X$ O5 D+ |, f7 _
-
3 H' Z w) G3 ~2 Z) I+ X5 x' P - *ok 没问题spring和hibernate整合完毕 ) q; ~& I5 c- s6 O3 }; D
-
: N2 h0 z# d. P h$ v. o - *再将struts2所需包加入lib中 * H1 z9 p7 _1 ?9 K: V
- *创建struts.xml配置文件 3 x) S8 r# H3 L( E) ?5 }
- / O+ t) g% g# D9 W }
-
+ W) Z3 S. t' g+ ? - 8 Z8 w' Q' X' J
- Java代码 4 R$ N1 e6 W0 d! O, K2 q9 ?; T
- 1.<?xml version="1.0" encoding="UTF-8" ?>
3 T ?1 C7 v* I O6 r2 _ - 2.<!DOCTYPE struts PUBLIC 4 F9 `. a4 `9 A" z, O, t8 ?
- 3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
& K8 ?' R' s$ b; j6 {2 T. c, R - 4. "http://struts.apache.org/dtds/struts-2.0.dtd"> 2 O. l+ F9 L' X! e$ _3 [8 s w
- 5.<struts> 2 H, w/ D2 T/ C" w, R) R
- 6. <!-- 将struts的action交由spring管理 不在由struts的工厂介入 --> ) ]& a3 T' K: @ V5 l% E4 y
- 7. <constant name="struts.objectFactory" value="spring" /> 4 S$ _" \4 f9 [2 V+ }- f
- 8. % ` a7 y3 {) \) d8 _! u
- 9. <package name="employee" namespace="/employee" extends="struts-default">
( L0 @$ M$ \4 F: R7 g% n# J - 10. <action name="list" class="employeeAction">
' f9 F6 C5 E' r0 z! m2 m- a2 L - 11. <result name="success"> 6 o' L. t. |& p: j/ f+ @
- 12. /WEB-INF/feapp/employee.jsp
0 S6 W. P6 h" |! c- }2 e - 13. </result> 3 k6 J+ p6 z; W
- 14. </action> & \9 U: D) {; ~! ]& A/ d
- 15. ' P+ n' u: x( e6 _
- 16. <action name="manager_*" class="employeeManagerAction" method="{1}"> 9 E! t9 P9 _0 |9 N2 F. ~; B) h
- 17. <result name="success">
9 l: [3 k8 j% Y i( I+ b - 18. /WEB-INF/feapp/employeeadd.jsp 6 O# Y* J* Q F/ g4 {1 G
- 19. </result>
# \0 v+ Q& @6 K8 U% a" [ - 20. <result name="message">
2 v y# Z* m# \# A! k - 21. /WEB-INF/feapp/result.jsp ! H) v5 z& X' N8 s# P7 Z
- 22. </result>
) t" k, I/ f4 h0 s8 z- v1 c0 e& A - 23. </action>
8 J, l L% L, F2 [6 v, L* ? - 24. </package> 5 h7 n5 ?1 n' h3 X3 j3 b& w" z4 O( a+ U
- 25.</struts> ' _# i* |5 F$ D( Y# w U1 o& O% L
-
, b& f/ u5 x' l8 C8 j. ~ - *在web.xml中加入
( _8 ?* W3 k& }4 c, r* x5 W - 3 r( k) I) _' \3 V
-
0 K! i' x0 g9 |5 a- \, K8 S+ @ - 1 I( a% N* K7 J! h
- Java代码
c: a% J" j" [+ i7 o5 N* W) g: } - 1.<?xml version="1.0" encoding="UTF-8"?> ! X+ \' x3 e X% b) a/ Z
- 2.<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 3 d e$ Z0 R& L% l
- 3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
$ J |! D; b2 y - 4. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee ' p6 G6 w+ f& M* D
- 5. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> ; K; q& ^2 i' g, X1 |
- 6.
) D+ j# A: B" z8 |+ I- ` - 7. <!--
: N/ `: q1 o) l J: y* m; ^* ^ - 8. 指定spring的配置文件,默认从web根目录寻找配置文件,我们可以通过spring提供的classpath:前缀指定从类路径下寻找 * `5 Y9 o8 _/ F" D
- 9. -->
/ w4 L# H( K* C, D0 d7 u" h, o - 10. <context-param> 7 R/ c+ f) J) A( j$ [
- 11. <param-name>contextConfigLocation</param-name>
! W# }& ?) s1 C K5 F a/ E, m - 12. <param-value>classpath:beans.xml</param-value><!-- 多个配置文件的写法 classpath:beans1.xml,classpath:beans2.xml,classpath:beans3.xml --> 2 F6 S3 S* ~7 o8 n5 T) E" Q- \
- 13. </context-param> ( c, x( Y% e5 p( [1 i5 _
- 14. <!-- 对Spring容器进行实例化 --> ' i7 \) N; B8 T I) O. z
- 15. <listener> 2 _7 {5 E% ~$ P* \& `% `. K+ d
- 16. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
7 x# q& y9 D- i% F3 o - 17. </listener> # g( ~# G' ^ W$ B
- 18. : f) a9 a8 L5 z0 F( O1 m* `
- 19. <!-- struts2 的监听器 -->
: E- i4 F" e9 x: d$ q \. I, K) O - 20. <filter>
, B* a# e' H& g& I - 21. <filter-name>struts2</filter-name> 0 r0 v$ F6 ^4 Q U6 W! D% _: Q
- 22. <filter-class>
0 x' V- j& X( D5 K- q8 l - 23. org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 0 |. j. C. [ D6 A* `' q: o( E- g7 o
- 24. </filter>
. f. ^% z6 m9 w - 25. <filter-mapping>
& C) B" s7 w/ x, f/ F% a9 J2 J" l - 26. <filter-name>struts2</filter-name> 0 _) h7 @( j- w
- 27. <url-pattern>/*</url-pattern>
6 I, [" y5 G) F( d. l - 28. </filter-mapping> $ L- Z1 @" Q7 g2 [, B8 P" y
- 29.
- J* G/ w% [% n# {0 d( R - 30. <welcome-file-list> / }( D2 }: M2 ]$ [" H5 K
- 31. <welcome-file>index.jsp</welcome-file> 1 r& v4 i& [; D" |; @- ]7 `
- 32. </welcome-file-list> , L( ^. M$ ?; { N a: b: T( s- O1 c
- 33.</web-app>
; G7 f0 B$ t5 U0 `2 L - ) [8 }) r+ |+ a! A% j. I$ N& }; L/ Z
- *创建相关jsp和action 7 g& {; Y: L- O- f/ l' ]
-
8 o3 n ^- Q* _+ A; M+ |/ o - 0 n g- g2 f. c+ `- t! d/ u `; t) y
-
; k0 P9 h; I5 }2 N# v" F) N* J - Java代码
: K0 g0 U U6 f - 1.@Controller @Scope("prototype") ' }! A& V" L8 F! g/ t, L
- 2.public class EmployeeManagerAction extends ActionSupport { 1 ]! g0 |- K2 [
- 3. @Resource EmployeeService employeeService;
3 k) H5 c$ b5 {& p5 ]6 B& e - 4. private Employee employee;
: [4 A$ b( r. E% t - 5.
' j, o8 b5 _9 N! i - 6. public String addUI(){ : y5 S2 B c# v& M# r% T
- 7. //System.out.println("user come"); ) e2 i: @6 ~$ R7 A
- 8. return SUCCESS; - t- y \- D1 d2 a$ A2 k
- 9. }
3 ~$ T. d6 X: R- Z: [" S - 10. # c: n8 Z/ b& C" S K4 Q- f
- 11. public String add(){ 2 m6 O$ P, W$ e# b; E8 o
- 12. //System.out.println("--------------");
# R# m# q z" Q2 A6 |6 o, W$ ^) m: m - 13. boolean result=employeeService.save(employee); 3 s! j5 [$ K# X. x) }( m
- 14. //ActionContext.getContext().put("genders", Gender.values());
$ S! E3 U H7 s5 s4 I - 15. if(result){
9 h0 a& x# i7 X6 _, | - 16. ActionContext.getContext().put("message", "保存成功!");
2 D) j+ I( j/ ? e2 G& s - 17. }else{ $ _, y, M+ _; F7 d* R
- 18. ActionContext.getContext().put("message", "保存失败!"); ! m, _2 j$ d# X& W! h
- 19. }
8 J% K, ~4 A: P: x% ]3 w% h# d - 20. return "message"; ! [1 W( }6 Q) o' X; d, K5 a# M
- 21. } 2 M* b& A! n$ d( v' _8 v
- 22. ! ]2 |* U. V# a' k6 B4 R/ E! {. h
- 23. public Employee getEmployee() { ( _& i( W! W! u) N* \/ Q( p6 ]. G
- 24. return employee; # d, k& \+ P; B* y9 O0 W
- 25. } ( p' ?" r5 ~* U3 Q
- 26.
) }# v8 C8 u- N; p! R0 l - 27. public void setEmployee(Employee employee) {
8 C7 W. K( m7 ?( \8 N) P - 28. this.employee = employee; " G; M1 V( l1 _9 s0 s& U
- 29. }
+ T P' {/ A8 f& Y9 B0 y @6 k - 30.}
复制代码 & m2 `+ t2 I- I" x
$ A# i9 H* ]4 ?; p% a; t
|
|