TA的每日心情 | 衰 2021-2-2 11:21 |
|---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:
8 V5 o& t- `* M为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:) x/ l0 H& t- t, C3 }; n1 {
1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。
& C7 q2 c, E# Y3 q! c$ _2、性能优秀,这是一个最能吸引眼球的话题。, I6 J. U, b: e' p: j
3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。* g( |1 K7 }3 O0 x
! F) [* o/ e1 f* L! w9 V5 j
如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。" K0 N2 o! a, p. t2 b- V9 R8 y
4 t: _" g4 O2 P
Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。
6 _; M7 ~3 m) k# `( i1 N- E* }) s4 a7 p& J- L
Struts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。* ^% W2 M5 k" X& p
+ S' q& X6 i$ q7 ^& y0 w8 R" z
Spring3 MVC的优点:
7 I) I* ^8 [, }* q; K! b$ K2 X, r1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。' ?) \7 Y9 k9 ]$ P, R
2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)
5 u7 Z7 [+ X" x, U7 B+ G3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。5 |5 ?& k/ S/ ^! z M- A
6 r" {8 y& O- c& L. CStruts2的众多优点:1 Z7 W* O% S8 l7 [+ B
1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。
\* H1 @5 U; \6 a( `! v2、其它方面略...
. a0 U+ d. S. B( H- x# I==============================================================: Y; y! x8 |( ]& z$ M3 k$ F8 d0 S& i
什么是mybatis! J2 v9 @# @ Y# E8 G8 K5 A9 w
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.' t8 `5 f' O& G' N
) I# `' I" i% h; u) u. G" Z
orm工具的基本思想
' M: X" t+ }; p+ c5 S- o无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:
: N; h7 N/ p, }! e; B5 X8 y1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.) X+ W. Q! Y5 b6 y- T7 |
2. 由sessionfactory 产生 session) f/ a' s6 e- k$ ?
3. 在session 中完成对数据的增删改查和事务提交等.7 ` L2 _: p) w/ R& r
4. 在用完之后关闭session 。
: @- E2 {$ B J. i8 C2 W- a5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。
- ^ r Z1 O/ l3 a% [. S
3 U; r; B4 V1 }' x项目说明:实现了用户登陆demo。
: ~6 V6 Y7 p' G6 T项目配置说明:
7 |7 K4 F- B) I/ ~4 q. s5 U/ |web.xml:* j d1 p7 f5 z( y+ x/ K$ X
- <?xml version="1.0" encoding="UTF-8"?> * d/ E: s u F/ R3 C ~4 W, `
- <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
5 U/ w+ }5 W- s/ g) R2 R - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
) ^7 u; n! N2 T- s - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
2 Q5 }& J, r9 @$ \6 ^ - http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> - Y. L# N3 L% `+ g, w) @" L/ L5 r
-
/ e, }. d# s* E - <!-- 监听spring上下文容器 --> D" x/ J2 H' o) U) i0 D% ^& N
- <listener> ; T; ?; W* R6 T o# `
- <listener-class> 7 \6 q$ }4 \; i6 R4 N4 r
- org.springframework.web.context.ContextLoaderListener 5 k/ p/ v4 t' J1 Q& {* D
- </listener-class> , V; @) O+ K" O9 q1 h2 K" V( |
- </listener>
; ~* V, J" ^) X, ? - 0 Z! i1 |/ v+ _! G
- <!-- 加载spring的xml配置文件到 spring的上下文容器中 -->
# _- k v* h% M! w5 k: Q \+ w& W$ l - <context-param>
( Y$ A! o! A# C& V3 g4 p: h - <param-name>contextConfigLocation</param-name>
# g8 K, v! u* U& d - <param-value>classpath:*-context.xml</param-value>
# U0 k: U9 d7 P, g! S# P; U8 y - </context-param>
0 F4 o. F# e J1 N5 H" j -
! q6 y( n/ n- g5 R- \7 G - <!-- 配置Spring MVC DispatcherServlet -->
3 r7 E* P1 q( L - <servlet> $ E3 l4 ^" a) P
- <servlet-name>MVC</servlet-name> ( |( ?! f$ P2 }5 B
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
+ G, v# |: l3 Z1 s& n. R - <!-- 初始化参数 --> ( N |8 n5 m" m+ D; P" w
- <init-param> 9 L" t% q& @$ [2 y% ~
- <!-- 加载SpringMVC的xml到 spring的上下文容器中 -->
' n2 ~7 j) b7 X% q+ d8 n - <param-name>contextConfigLocation</param-name>
1 c* T3 \/ B! w( F7 b& i - <param-value> 9 F' B2 _5 m. {: c P% V
- /WEB-INF/classes/mvc-context.xml
; X" Z4 _# @9 n9 f! ]( k' ~# u( [ - </param-value>
4 j+ F4 z, J% M$ I - </init-param> 1 F. q$ o* |5 Q
- <load-on-startup>1</load-on-startup> ( U7 C$ J& b* n d: S; w
- </servlet> + E$ @# ]! `0 d9 W
- 3 v1 z( Y* E, ]6 A3 D
- <!-- 配置DispatcherServlet所需要拦截的 url --> , M( e- X$ w7 _$ s* S
- <servlet-mapping>
. ?: `1 }1 T: N, a- J - <servlet-name>MVC</servlet-name>
5 B9 D6 j" U% D/ Y: B - <url-pattern>*.do</url-pattern>
. @" [8 w. B5 m0 s) m7 { - </servlet-mapping> 7 O+ \0 o) C7 G- p0 _% G7 e
-
; E. h0 c8 d; }8 B6 S" \# k1 h& p - <welcome-file-list> , l9 d. C8 B5 r
- <welcome-file>index.jsp</welcome-file> ; ^# |* ?$ V7 J& w
- </welcome-file-list>
' _, Q9 n( c& O; ^1 \5 M/ ^ - & X- L, d$ o7 j" }) R
-
' e6 f3 C5 Z. E - </web-app>
复制代码
% ~. Q, |5 r) j1 _ ~& Z9 imvc-context.xml:, x4 E$ S/ _. _
- <?xml version="1.0" encoding="UTF-8"?>2 G9 t4 k% b# Z# m, q9 z" x
- <beans xmlns="http://www.springframework.org/schema/beans"
4 g g2 c8 r2 h - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"- R. s( \7 S3 @; q
- xmlns:context="http://www.springframework.org/schema/context". a: Q( l# K" r
- xsi:schemaLocation="http://www.springframework.org/schema/beans" b9 R% T' B/ ~& j( R2 p! \5 L+ ?
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
0 s+ L6 I2 \, b* B- ]) q* @ g - http://www.springframework.org/schema/context) z5 ^ R2 P; V5 h
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">: C; X) E; @+ j$ o2 o2 ~
- - J, r0 M- d$ z' ~, n
- <context:component-scan base-package="com.wg.*" />
4 K+ Y) N7 s% w - 0 a$ E8 f7 q& o4 Q5 X9 j
- <bean id="viewResolver"
2 O8 e4 {- H7 S& x - class="org.springframework.web.servlet.view.UrlBasedViewResolver">- J+ H9 a# P0 t5 L% A
- <property name="viewClass"; s3 U$ u. M* _9 L* S5 X% k
- value="org.springframework.web.servlet.view.JstlView" />
1 M5 U4 {# |3 G. s' k% s2 G - <property name="prefix" value="/page/" />
0 k1 G! U0 ]# z* o+ ^ - <property name="suffix" value=".jsp" />/ v* E8 T) B6 r, m
- </bean>
) u5 ?) F- u5 b4 y6 G# ]1 ^, I - </beans>
& Y( N( Q( T* v* R" P0 {% k' a
复制代码
# d4 ~! [* T |6 K( H! T. E7 \mybatis-config.xml:7 L: U: R' _: h+ R6 a
- <?xml version="1.0" encoding="UTF-8"?>
' l5 c2 n: M# B. j3 Y - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
/ h$ [& B1 l: g W% y$ L; _ - "http://mybatis.org/dtd/mybatis-3-config.dtd">
( Y$ O0 w" i; u, M! s U4 {) P# a7 o - <configuration>' g+ `. Q4 \* m% }
- <typeAliases>" H! Y* w/ O/ ~+ R
- <package name="com.wg.bean" />
+ v4 Z6 Y8 D+ c+ [. y* k - </typeAliases>
, |3 w) Q0 Z- J5 d: }0 `' k - <mappers>3 N* w8 P' G" {4 r7 D
- <mapper resource="com/wg/bean/UserMapper.xml" />
' O# k; c) h1 D+ e2 w - </mappers>7 Y1 V9 O- q; b: \5 k
- </configuration>
复制代码 root-context.xml:6 F: B) G8 F3 F/ R/ I' U$ U6 A
- <?xml version="1.0" encoding="UTF-8"?>* Y/ ^4 H* k1 @/ a# F# F7 m
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" $ l$ g# i, F# u. K
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- c- G/ R" {& x& I; l. q - <configuration>3 z: O8 L" ?! l' F9 c! d; z( S; O# G
- <typeAliases>3 p4 x( j i; i% K: M, J) l
- <package name="com.wg.bean" />
. |* X1 a& c4 E V( \ - </typeAliases>( ^3 c6 u# E( Q' X
- <mappers>' l( n, O/ _3 A* @- m6 `
- <mapper resource="com/wg/bean/UserMapper.xml" />/ L6 D+ | ?; K# J
- </mappers> P, g) G0 b) J# |# ~4 J
- </configuration>
复制代码
$ o( H. ]5 T, R4 a* m" f, w- puser-context.xml:- <?xml version="1.0" encoding="UTF-8"?>
$ B: ?2 ?% c/ Y2 S - <beans xmlns="http://www.springframework.org/schema/beans"( q& p/ r5 N4 a) `4 s c
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance". W! u" J" Y1 B: T
- xmlns:context="http://www.springframework.org/schema/context"# H8 t4 E6 y" C: B; c8 t, g" H+ |
- xsi:schemaLocation="http://www.springframework.org/schema/beans% p) B4 `1 t P% J
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd- ^! K' u$ x6 U8 R) p- J! e
- http://www.springframework.org/schema/context
- j6 @$ G. ?9 K, x j - http://www.springframework.org/schema/context/spring-context-3.2.xsd" >- o6 J+ t- ` o1 @7 d0 Q) x/ i
- 6 u# }6 y! A: t- Q. K2 d
- ! u( _ T9 m' s" m
- <!-- 用户Dao -->
* F; T' @5 A, N9 b/ r3 x+ g. J - <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
! ` j; j1 e5 H6 K( N: X5 C - <property name="mapperInterface" value="com.wg.dao.UserDao" /> * c' k$ F; e; I% `
- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> - g& B: i0 Y: _" r! F$ @$ [
- </bean>
. o5 B) @7 N& q( n3 [ - 5 p9 H/ ~+ ^/ j0 U
- % j: U0 ]' L- K8 `
- </beans>
复制代码 + v/ u5 p7 R `: F6 v; i" K9 p! S. l
; \, Z& v& S4 E
+ e* f, S$ s- J7 ?6 S/ p1 F链接:springMvc整合mybatis项目源码
% d/ \9 o% B" q) O# d 密码:
; ~1 O. O. {/ B4 I6 n" I8 o8 B/ N% D: O6 I* U, v
[: n0 B T! w5 U6 N
, F: i q8 F, P5 A |
|