TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:
# `4 X/ I- e# C& Q0 G: Y, ~- \为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:
8 ?* U1 k; ~$ ?( t* M0 ^1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。
3 o Q D4 ^6 F/ Q; J5 Y7 M4 R4 {+ L2、性能优秀,这是一个最能吸引眼球的话题。
5 f4 f1 H5 {9 J$ v5 \0 E- t2 A, C) J3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。- s% H' Q S. ^3 h( N+ n
) e; v" J" h- X; X: O6 X3 ]
如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。2 H9 _$ e" Z, G/ R# r
. q$ w8 a1 z, s( J5 ]
Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。8 _6 J1 O( d; N: z& h; U0 d
% z1 l5 w/ b# g# D' Y
Struts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。& V8 Z) r: G" r) V' q9 ?: ?
$ g8 y- v7 H% U0 A4 }
Spring3 MVC的优点:! I% R& p8 @1 f' E# \+ @8 u; C, p
1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。
) t3 C ^% m% y- a2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)
E5 X* v1 ^8 c2 g/ F" }3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。
' P8 k: w) i8 f6 Q& i- @4 [- O- W4 ~8 w% o4 r
Struts2的众多优点:6 D: |9 H1 C5 _
1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。
2 q) u+ ~5 A& O i2 A2、其它方面略... ! b6 `6 l2 c3 v$ v U
==============================================================4 D7 g8 f0 s5 @! \* A+ P* C& y
什么是mybatis8 h8 t$ H9 T$ B8 E% s0 U5 s
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.
" D# z1 z/ g: K1 g& d
. l! K# U! A) U: n5 w1 r3 qorm工具的基本思想
/ w" j9 F# [, m9 R5 R& }4 e无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:
3 V9 H( b+ ~$ c1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.% E7 J/ o/ m: M& s+ D
2. 由sessionfactory 产生 session
j- }; L* D4 R$ o! m* L$ P3. 在session 中完成对数据的增删改查和事务提交等.- c, {$ J+ }5 c2 B( @
4. 在用完之后关闭session 。; S# m' E- w: S. I9 z, m
5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。- }) f; \' J+ E! b/ L* P/ e! ?
. l8 E* @/ P$ d) {; P项目说明:实现了用户登陆demo。
6 ]# k" ?* E5 t项目配置说明:% P! Y$ S6 L6 F' ]
web.xml:
, @5 p% k" C8 w2 O' f- z% d- <?xml version="1.0" encoding="UTF-8"?>
9 u, v1 s b5 k) W - <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" ) B5 d- v% g0 W
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ' L& P$ m6 e1 n6 f" T2 J$ ~! H
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5 m. o- L; K2 {" V+ b - http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
* t3 m+ A, o% E; e -
; Z5 t: U/ l" b8 h# I; I, Y - <!-- 监听spring上下文容器 --> ; U! X. V8 M: b! D& n* R% R% h
- <listener>
+ g$ `9 A8 I1 n - <listener-class>
: g7 l; I8 f6 H) C0 N* K: g( b! U - org.springframework.web.context.ContextLoaderListener
5 M0 j* p; G* g/ h* H: C1 l8 ?, V - </listener-class> ( @9 r4 e' w- H# W+ @- S8 [
- </listener> 9 q; [8 X) E9 |. m, ]7 o
- * U# n( L& r5 E
- <!-- 加载spring的xml配置文件到 spring的上下文容器中 -->
4 v( y# @* E6 q5 _3 _ - <context-param> 3 `6 y$ ` }+ b- ~4 R X
- <param-name>contextConfigLocation</param-name> : r3 b( W! H) S0 X8 F! h0 w
- <param-value>classpath:*-context.xml</param-value>
) [0 q4 q8 i5 Q" `3 | - </context-param> 7 q; V c! C! a, t* R, @
- 5 G3 T ]0 P5 Z; |# I @
- <!-- 配置Spring MVC DispatcherServlet --> 7 e0 V2 a: Q, a# k3 O
- <servlet>
4 Q9 L' B8 G; [/ i! H/ K0 {! L0 D0 g - <servlet-name>MVC</servlet-name> ' d" Y3 d5 W# P3 O, x0 K: m/ o* z
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> ) I: `3 C3 I1 R
- <!-- 初始化参数 -->
3 e% s2 N8 A, g$ g. _. F# ^ - <init-param>
! X! ^4 I; s& R& z$ V/ U1 c - <!-- 加载SpringMVC的xml到 spring的上下文容器中 --> 6 l3 v3 o' T. Y/ u& ~
- <param-name>contextConfigLocation</param-name> 9 b% M9 R) a7 |/ f2 ~
- <param-value> 9 Y" h7 A0 a% j) C- [# ~/ |
- /WEB-INF/classes/mvc-context.xml
2 u% E% h& ?9 A9 J - </param-value>
+ c6 h: w0 ?( K: K) ]9 V - </init-param> 0 u9 Q8 [! {4 l5 H: q1 y
- <load-on-startup>1</load-on-startup> / ^! _+ S1 F* j; {, [2 Q2 R* E4 ^( I
- </servlet>
5 f+ T9 J1 m# u4 [3 t& U3 G -
! h' C$ V2 u' f4 V. q - <!-- 配置DispatcherServlet所需要拦截的 url -->
; t$ Y% D2 E- q _' ` - <servlet-mapping>
+ N5 J. N |$ {0 g1 |. R( K) u: \( F. g - <servlet-name>MVC</servlet-name> ( b) l4 \) I: f9 t M& `( G$ t; X
- <url-pattern>*.do</url-pattern> $ o, b( N$ T; V/ ~% } b' Z6 Z
- </servlet-mapping>
7 [! [ M% i( }2 C) ^% X -
! I: e* s+ o G% P1 b, R: Z) m - <welcome-file-list>
# v" _4 U6 X. h3 a& \ - <welcome-file>index.jsp</welcome-file> 4 X, {6 U" g# \
- </welcome-file-list> 4 l$ I" P; V: \/ }- ~
-
% V0 w3 Q; Y, }9 c+ G) Q8 b - 5 j/ h& g* b! e
- </web-app>
复制代码
) b, E8 V. n* ^mvc-context.xml:
% ~$ g7 y1 Y. f, u- <?xml version="1.0" encoding="UTF-8"?>6 K, U: T. l' s" J1 K9 K
- <beans xmlns="http://www.springframework.org/schema/beans"
3 H: e6 D F6 [4 D3 k2 @2 H - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
5 G" ^3 n, _1 p3 ^& x - xmlns:context="http://www.springframework.org/schema/context": j6 m8 R, t4 e2 E+ q. o$ g% f
- xsi:schemaLocation="http://www.springframework.org/schema/beans
0 Y: i6 } @( v; A7 u - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd2 R. a# t8 E( @, Z h1 f- _
- http://www.springframework.org/schema/context
) D0 T+ `* Q4 h/ X. o1 O - http://www.springframework.org/schema/context/spring-context-3.0.xsd">
. U- w( k' f/ m% `' B, R7 r$ h - 6 Q% W7 j/ k) M ?4 D
- <context:component-scan base-package="com.wg.*" />
L* ^' r% ~* u& R9 `2 z
2 ~, z$ A0 k% n0 Z- <bean id="viewResolver"! D; `7 e( W- M- z" R9 t6 I
- class="org.springframework.web.servlet.view.UrlBasedViewResolver">
8 U# V8 A, L* Z9 q- C - <property name="viewClass"
/ F( ]0 c$ r) o- f7 U - value="org.springframework.web.servlet.view.JstlView" />4 M+ h0 i) G' r0 X' G3 |9 s- p" I
- <property name="prefix" value="/page/" /> _. ?; v6 w4 L' @9 r( L7 m
- <property name="suffix" value=".jsp" />9 n" x# l; n" Y5 |0 M Z( k- S
- </bean>5 b' t, N' n) f; e
- </beans>
/ U1 E8 Y; t. d" @! o
复制代码
+ y# \- q0 t% K- V; J; X- h; mmybatis-config.xml:; u, W% r' h# g! |) y6 n
- <?xml version="1.0" encoding="UTF-8"?>% C. p" z& w' p6 c$ B! ` P: m
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 1 K( b9 \ `2 s/ S5 r9 `) Q% }9 _
- "http://mybatis.org/dtd/mybatis-3-config.dtd">! S e! V9 V* O5 m( Y. M2 P$ Y8 w
- <configuration>
8 Z8 h, I+ m) a4 l) L x0 p - <typeAliases>
9 T1 a; U( T8 R( a - <package name="com.wg.bean" />
4 {8 m. N q9 t9 `$ ?8 C/ \0 D, A5 k - </typeAliases>
8 d+ R/ e$ i8 Y6 V6 M: y - <mappers>
3 h; }# j; j6 D% g( q: c8 O" C - <mapper resource="com/wg/bean/UserMapper.xml" />
* {% q% J& H' R. v5 c4 l7 b - </mappers>/ u9 U/ m* \9 J1 z7 b
- </configuration>
复制代码 root-context.xml:! l: X! Q" d! L8 C1 E
- <?xml version="1.0" encoding="UTF-8"?>
4 ^) M* P" F5 }; d& C) } - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 5 B. ^+ X: A- p( L
- "http://mybatis.org/dtd/mybatis-3-config.dtd">' C3 \! ?5 a# C6 d, w
- <configuration>
% Z8 W# I! g; g/ x - <typeAliases>0 ^" J1 R7 u3 V
- <package name="com.wg.bean" />
0 Z7 ? \& F# \9 F5 p6 `* ]( Q& I - </typeAliases>
+ b6 M1 C3 y0 O. o" Y! `1 F - <mappers>; F& r6 ?6 p, ^% x
- <mapper resource="com/wg/bean/UserMapper.xml" />
2 F1 Z* a2 I1 R+ Q. M6 k7 K* _/ ?& e- j - </mappers>5 t4 F# w5 B! p0 c; d
- </configuration>
复制代码 # o# i- J6 v6 ^+ K; W8 ^) Q
user-context.xml:- <?xml version="1.0" encoding="UTF-8"?>
3 [; A8 C' E- \: Z - <beans xmlns="http://www.springframework.org/schema/beans"3 F2 t8 M8 n: O$ b# {+ k+ ~
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"( F- F8 A# w7 ^' e0 U
- xmlns:context="http://www.springframework.org/schema/context", w& l6 p% Z% L$ G
- xsi:schemaLocation="http://www.springframework.org/schema/beans/ ]+ U: }' H' R9 [
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
; `+ o7 B4 o2 A. p; v7 }; | - http://www.springframework.org/schema/context/ A! C+ V, {) c
- http://www.springframework.org/schema/context/spring-context-3.2.xsd" >
- o4 [" L* Y6 I, o. U - ! H8 S! L. E# D
-
0 v' H+ A# v& F; U - <!-- 用户Dao -->+ F3 T; y& u+ v% V* N" w' U
- <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> 5 Q( \; O6 P7 O. _
- <property name="mapperInterface" value="com.wg.dao.UserDao" /> 4 U/ A) G. e" L) H
- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
4 k% a+ {# ^% u9 x7 U - </bean>" q }. o P' k& N0 }- U
-
9 l+ W% w/ S. f4 l2 r: U
6 ~7 X' o% Q" ?6 l; j; K7 \7 l- </beans>
复制代码
R, c& T& w0 r, v
2 ]$ L" M- t& c& m5 L, e0 d$ `7 k" ?$ E; p
链接:springMvc整合mybatis项目源码
9 V A% a8 T I& j8 X 密码:
; D& j* E3 z$ W2 ]' n
, z: L/ v# r3 c6 F# F- z9 d& O& W6 M
( B5 z: j/ G+ t, A
" n$ `' s3 ?& r |
|