TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:
% h& P f) j8 W* n4 v/ C0 N" e. L为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多: g. C7 {! t1 [ N- F2 Z/ \2 `
1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。
& t$ O- @1 U8 o$ c2、性能优秀,这是一个最能吸引眼球的话题。6 D }, d( v, N. N
3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。
( t; y" w+ I: ?3 {( ^5 ?
" b4 M. R2 V6 {: L7 `7 D4 w如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。, _( w6 Y& e( j7 N
s1 Y/ O3 y- w: J/ Y% xSpring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。
8 T6 W( v T" Z& `/ D: M+ w4 b" Q% R, x6 `, y! L
Struts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。
9 i1 X5 N F# U% D3 Q& A* J; B7 ]
' F/ g" Y: D9 O$ E6 K3 tSpring3 MVC的优点:0 X/ F6 H2 w+ P1 y4 l* R# _
1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。
b) H7 K' l3 \* ]- K P7 L2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)
9 S" m7 i; r) b5 a2 ]5 E3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。
: U2 G1 W- @( e) e, d) I$ U7 `( s5 \
Struts2的众多优点:0 t- R( R' t. f( O
1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。
& U! p4 O: p4 z8 Z5 ~1 k" }2、其它方面略... J* { I' j5 N5 M2 p4 W, Y6 e
==============================================================: h3 \0 V1 e- o" A8 B
什么是mybatis
5 ]' j5 K* V* l* ?4 [! EMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.
* m# K" i: a' f& x- N) x0 z: q/ N. o6 f+ t5 T* _7 |
orm工具的基本思想
/ `2 H* b& L7 X5 K无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:
; i0 ?1 O/ o2 m6 z' j8 h+ j$ L1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.3 Z# E+ p! c0 V) X1 A! s. W& B e# `
2. 由sessionfactory 产生 session. L7 q" k2 c+ c) e8 t9 ~" X: a3 j
3. 在session 中完成对数据的增删改查和事务提交等.
, D$ M6 ~; l" K) k" a: b6 }4. 在用完之后关闭session 。
7 W0 P) V" N6 q0 X1 I5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。
/ r5 x- G i, h x0 B0 ]6 V5 d$ W& ]# O9 {' {: r- k
项目说明:实现了用户登陆demo。
2 L: a- }9 ^' p7 S项目配置说明:8 D) G# N; m) T: _
web.xml:6 k* x, B$ I' c' G2 [6 B
- <?xml version="1.0" encoding="UTF-8"?> % v9 _4 J# m; @) n: ]1 x
- <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" $ U+ {! b3 E3 m8 r
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" / m9 K+ W, g7 ?& m3 z
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 8 ]% B2 Y3 S" g
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
, L \7 k" q" i- I - ! m3 j# w: G" g# y) J
- <!-- 监听spring上下文容器 -->
% O }7 }" v. \. c& [ H - <listener>
# [ [; N3 Q. G - <listener-class> 0 g- `0 o, E7 T; n
- org.springframework.web.context.ContextLoaderListener 1 V9 c4 d- h; f: [4 t; _$ d
- </listener-class>
; e! l# y1 h/ |3 q9 S7 l - </listener> 7 G) }: M g) v7 }
-
2 O* O3 ?; b/ v# \3 d: H- l - <!-- 加载spring的xml配置文件到 spring的上下文容器中 --> 9 ?: J; D- k* P) m
- <context-param> 4 m# E! e8 M$ Z
- <param-name>contextConfigLocation</param-name> - u; `* [9 d7 Y7 Y Y9 ?
- <param-value>classpath:*-context.xml</param-value>
6 H3 e9 |5 V% B/ z( ` - </context-param>
7 N# Z% \ V% x( M2 U: e: W -
) Y/ V( C1 L' V% c - <!-- 配置Spring MVC DispatcherServlet --> / }7 L8 H; ^- P
- <servlet> 4 e) o$ t8 t* }2 J
- <servlet-name>MVC</servlet-name>
/ e: F! w# Y. J! V' l - <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> ( K6 x: @% d% s" Q& l! d
- <!-- 初始化参数 -->
H' w: Y8 R4 l - <init-param>
* Y) S: ^2 i! z1 l, K$ ` - <!-- 加载SpringMVC的xml到 spring的上下文容器中 -->
* z/ [- U7 m6 V4 E: j8 O - <param-name>contextConfigLocation</param-name> 2 ~" y7 X" _! v6 _
- <param-value> 5 @. J4 V6 J {' s
- /WEB-INF/classes/mvc-context.xml
+ D) O5 e! F' p8 i% E6 F% H4 d - </param-value>
. Y5 C* D: [/ a" T - </init-param> 5 H+ E6 q; ]' Q9 ^
- <load-on-startup>1</load-on-startup> / }; U; B6 X/ R! Q$ m
- </servlet> 8 L) |1 H2 F0 i) o
- : C0 b+ x P" z
- <!-- 配置DispatcherServlet所需要拦截的 url -->
$ ?+ { q, S" j3 I" W2 S - <servlet-mapping> 0 }( Y8 `' s; I5 g7 N
- <servlet-name>MVC</servlet-name>
' w# S8 e% H7 S; m1 r% X - <url-pattern>*.do</url-pattern> + d/ Z# K( g* B, T
- </servlet-mapping>
( V7 B; w- I! U1 q0 d - # q9 [' o( C2 X9 c' \: @1 E% n) v
- <welcome-file-list> : G" L0 {, u" N3 X! m4 i0 P
- <welcome-file>index.jsp</welcome-file> 4 V0 _9 \1 V. L5 V
- </welcome-file-list>
: c- Y ?9 H/ R* I - 3 E5 I" }; O. S f- g$ |& b
-
0 n2 @ \: R" b! Y; H, J$ B - </web-app>
复制代码 / B, H3 c q- c4 V- N% ?
mvc-context.xml:) _# b* v( S9 Z6 X; {, N3 B* t( ~
- <?xml version="1.0" encoding="UTF-8"?>3 p( g' s) F: ]/ V, d
- <beans xmlns="http://www.springframework.org/schema/beans"* N, ^6 L8 c6 \/ h: D _+ M! Y
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"$ n& l7 p7 N* }0 }: }; [
- xmlns:context="http://www.springframework.org/schema/context"
: B/ i5 C* T- O4 P9 z - xsi:schemaLocation="http://www.springframework.org/schema/beans
! x; N! N7 y* E8 u - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd9 M. W- u4 }7 Q1 l
- http://www.springframework.org/schema/context; H2 Y: N R" Q3 \7 o `6 e
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
$ }7 q7 f9 N" m: k9 A - ; e8 a7 \' | G$ ~
- <context:component-scan base-package="com.wg.*" />
5 |; S, r# r+ M) e3 a8 p9 R
4 t. T% s/ Y' R% P5 Q! \- <bean id="viewResolver"
# Z$ u! J% g/ g% D g, e) X - class="org.springframework.web.servlet.view.UrlBasedViewResolver">
- {/ T2 E* Q& E/ I! ?+ ^ - <property name="viewClass"1 O, t; c, P6 e& C
- value="org.springframework.web.servlet.view.JstlView" />* T3 U4 T5 L4 y) u0 ^+ a8 j
- <property name="prefix" value="/page/" />: I/ V# }, W* g! U7 l+ B
- <property name="suffix" value=".jsp" />9 w) ]2 t& q8 [# Z$ T: M+ R* v4 Q
- </bean>
! F0 j5 z' l# E" ]0 a - </beans>& T: a& f* Q9 c6 _# z! l
复制代码
) `. W6 l v7 a3 Z& }: B$ f j5 `( ?mybatis-config.xml:: V: z, g; k! i8 j/ q5 y: R
- <?xml version="1.0" encoding="UTF-8"?>0 y: d/ U1 |& D. w; ]- j2 E: a
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
9 _3 \5 k: Z( J, m" k' }- P4 D - "http://mybatis.org/dtd/mybatis-3-config.dtd">/ a# _5 X' R0 B/ b4 }" {, J2 |
- <configuration>) k! l0 x2 }' V/ @# c4 n
- <typeAliases>$ C( ? b0 \2 @
- <package name="com.wg.bean" />
% h' f" S8 o" o3 R0 Q- P - </typeAliases>* w: ~9 T: Z5 X+ n4 ?; J" q$ E
- <mappers>% X3 t1 e2 K3 k$ J3 V4 q3 ?
- <mapper resource="com/wg/bean/UserMapper.xml" />
- ?& W3 y, p, ]' X7 z L& k1 V - </mappers>
! L! E& [0 F, i8 W2 _ w" n! d - </configuration>
复制代码 root-context.xml:6 M& B4 j* b$ L i/ Q: {
- <?xml version="1.0" encoding="UTF-8"?>! V/ J( W! _4 \$ I5 G! z
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" - L7 H7 C3 I' t9 a2 M
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
8 m" S3 O% {' E/ E6 |. L8 `4 `6 b& z5 v - <configuration>
* G/ k# T3 t% J. r! \ - <typeAliases>/ e& w( l# R+ R' m, K
- <package name="com.wg.bean" />
! W0 I1 h! z/ b5 Q - </typeAliases>* q0 l7 i$ s- q3 x0 A; V" o
- <mappers>9 O9 X+ P8 S. K4 C. H8 y
- <mapper resource="com/wg/bean/UserMapper.xml" />8 t) X/ I) e2 a% W4 t
- </mappers>; t' M4 ]7 Q* ^1 S3 u
- </configuration>
复制代码 - y, R; r: i% i
user-context.xml:- <?xml version="1.0" encoding="UTF-8"?>
, |! |, Q5 Q$ K" Q0 ~ - <beans xmlns="http://www.springframework.org/schema/beans"
$ X8 D/ e2 j K, ` - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"2 R1 m* ]9 U( u* g; p! I7 K
- xmlns:context="http://www.springframework.org/schema/context"
: v% s0 x9 K; L - xsi:schemaLocation="http://www.springframework.org/schema/beans
; v: `- T( J% v% P% R; E+ ^1 Z - http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
- C9 T) {( u' _ x$ d* X. O: @ - http://www.springframework.org/schema/context# T2 r: _. `7 A7 F, _# h
- http://www.springframework.org/schema/context/spring-context-3.2.xsd" >
: m. B! _* O: f8 D4 a' l& I -
9 |& a" d0 v9 _( o -
# D3 {( r) k+ q4 m9 D" J - <!-- 用户Dao --># ~* a" T6 [" l/ I3 k# C
- <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
' Q, k, m- y& t0 g: x2 |6 Z) x - <property name="mapperInterface" value="com.wg.dao.UserDao" /> 9 I4 p( ^0 T/ s" |3 R
- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> $ Z, k! I2 d. }! W- C
- </bean>/ D' ?. _) e9 ^4 g
- 1 N O+ m9 G g! H
- / g8 n! u7 q' H3 S/ t: h5 I5 `
- </beans>
复制代码
) S4 O+ ^ q J; o& k- S0 }4 x4 l9 V
I8 P* {; @4 ?# R$ x U( C* ?! v. | T5 Y j. N
链接:springMvc整合mybatis项目源码7 R6 q1 C/ D8 t' f
密码:
1 g# P3 r) Y$ c4 |- M. B: @! o0 L0 e5 s
, d- |8 v* ^9 O: Y6 n- p3 a
( [* h; f. g# K
|
|