TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:7 ], @7 Q$ Z' d9 S0 u; U1 E' o
为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:
5 I9 D3 u. V4 M! k1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。
6 W; } r% _8 q) \. y2、性能优秀,这是一个最能吸引眼球的话题。8 W* ]7 @. k& M: V$ r3 c2 V
3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。
9 {- e; j' ~. M4 ^5 X2 \3 w0 d+ H+ L* i8 x" m
如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。
: a/ J8 R, h7 K1 j7 n( L0 o5 ^+ c# k/ ]5 j* G- _2 f2 a' k3 {
Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。
% A. k2 F; o" E0 t
0 p& f% y0 C4 }; bStruts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。
& K4 W, l6 X. d* @" i
* k2 F! @( F2 x5 ]Spring3 MVC的优点:- v4 F8 D5 p' z
1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。' Y% B; Y& }) U6 Y+ [: d; Q$ D
2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)" {! L3 X+ M9 {+ p/ F
3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。$ ~6 E, n. G0 K8 l
) W% [: ^7 `. A! V* s
Struts2的众多优点:
4 Q2 U" B* i+ Y: O) q: e& O1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。
# A/ |1 P( E* h: O ^2、其它方面略... * I- ^* g) O* J5 _2 Y9 [
==============================================================
$ q+ ` x5 @$ {什么是mybatis7 ?7 q: c( }) {
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.
$ ]. T2 v3 p+ a# j6 r0 k
/ z3 |: U/ b. F korm工具的基本思想
- Q" N5 v( M+ m, W$ y6 [# F# r无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:/ Y$ o# {& o4 w
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory., L) q# [- G5 }" b$ Q/ R+ n
2. 由sessionfactory 产生 session* M! W7 k* E; ~2 o* m+ O5 {. x
3. 在session 中完成对数据的增删改查和事务提交等.
/ j2 O/ P8 P; L* H8 L6 W( e$ n+ g& l+ f4. 在用完之后关闭session 。. s) z* m- i) R* L$ l
5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。! O2 @$ h+ y& U: O: _6 q/ `
7 L( ^# P$ _+ W; ?4 u2 \" O项目说明:实现了用户登陆demo。
: Y+ }2 l0 f8 O+ ]; t4 ^项目配置说明:) e2 F0 Q/ i+ z# {
web.xml:: B0 B4 h% g0 H1 T4 K
- <?xml version="1.0" encoding="UTF-8"?>
9 j* Q, _+ U! x$ Y( k$ D. X, `0 | - <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 8 J% D2 A0 b% e8 T6 h
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
" [$ {* s- Y$ X! z2 e - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
: d: S1 e" N% H: \ - http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
: M1 n' e' @1 J' B9 Z -
6 f4 R0 `& H+ D: E5 ]& K- g - <!-- 监听spring上下文容器 -->
- T% l& C& z8 X9 D - <listener>
* T" d# c8 ^. d% ~7 [ - <listener-class>
5 S( P3 {- o! a! d0 C5 V - org.springframework.web.context.ContextLoaderListener 5 ~8 x& S ?- k, p; w
- </listener-class> K0 O8 C" \/ p3 t' n0 n) `
- </listener>
9 x9 u1 c* i) i+ y6 x - : P/ P" N5 P8 V" p) l
- <!-- 加载spring的xml配置文件到 spring的上下文容器中 --> 0 @# L. i( [' a, u& u/ C
- <context-param>
+ r1 h& ?5 B* a2 |% g8 F - <param-name>contextConfigLocation</param-name> 4 c1 \$ H1 n! S5 \
- <param-value>classpath:*-context.xml</param-value>
" A) S, e4 R" f/ w- f* n. s' D - </context-param>
& |% [8 g: z. b, r7 S. R" } -
( K, r; b" \0 K - <!-- 配置Spring MVC DispatcherServlet --> : J. E* t( g% q S( k
- <servlet>
) F M" `9 B2 D - <servlet-name>MVC</servlet-name> , N j$ b) x4 R. Q7 c4 w
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
9 k. Q3 q! M6 L, C8 C7 H - <!-- 初始化参数 -->
( f+ R1 j0 c* C% c1 O2 x, E - <init-param>
; D8 Y9 m4 m4 R8 M: r4 e - <!-- 加载SpringMVC的xml到 spring的上下文容器中 -->
' |' | j' Z- e. b5 ?' ~ M H - <param-name>contextConfigLocation</param-name> 7 Q3 z3 z# k& r, T/ u. s* x+ A5 Q0 Y
- <param-value>
4 D* I4 {' p5 B$ B$ D! s6 r, j - /WEB-INF/classes/mvc-context.xml 0 z" j: W$ q1 i! x/ a; [1 t& P
- </param-value> - o; E, m; D6 D2 K
- </init-param> 2 U; x3 F3 Y. r1 O2 ~) h
- <load-on-startup>1</load-on-startup>
, O0 s O9 N. F% X - </servlet> ' {1 J& d8 y( n6 P3 q
- v# `' o+ o' \" ?" V% o
- <!-- 配置DispatcherServlet所需要拦截的 url -->
8 ^; K, {7 J1 f f# T/ g+ e - <servlet-mapping>
4 z0 M! D; O+ @ - <servlet-name>MVC</servlet-name>
) [" L( h5 X5 ?3 z$ O - <url-pattern>*.do</url-pattern>
, [* ]5 S$ R8 E4 q T" E+ U3 O/ X - </servlet-mapping>
$ [- y: a+ i. f% R( z$ V7 V, ^ -
5 u5 P1 e( G7 @) C" ~. |. U - <welcome-file-list>
% @' j: u. p2 }% Z; t- N! ~ - <welcome-file>index.jsp</welcome-file>
% e+ @/ A4 [3 B9 O6 n, L - </welcome-file-list>
. r& @4 B& s% ]6 \; Z7 k0 v -
! N& P( D' e1 X - 4 [9 R* S& x0 @9 f$ ]% g; ]* |
- </web-app>
复制代码 ' g/ t+ P) r$ G; [! x( B. e5 `0 O
mvc-context.xml:4 S" B/ G: l+ f/ E1 ]1 x
- <?xml version="1.0" encoding="UTF-8"?>. W. O( c' e7 m+ p4 C f
- <beans xmlns="http://www.springframework.org/schema/beans"
; E$ H8 x( S) _) [/ e. r& k1 t# k - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
. f$ B% X" D' m/ z* ^ - xmlns:context="http://www.springframework.org/schema/context"
& c5 B5 P: r) q5 w - xsi:schemaLocation="http://www.springframework.org/schema/beans! X; \; a% v7 w2 ^1 Y% S
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
, c+ X% u# d. [7 Q - http://www.springframework.org/schema/context5 M; M/ W* V( f M' p9 g$ V
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
; m3 }6 E4 W+ @! P0 s
% x2 Q* E& h' {7 n( ^' l- <context:component-scan base-package="com.wg.*" />+ N3 Y6 n) L: b& H) b
- - P- o6 Q& k( j' z% }
- <bean id="viewResolver"
7 F% n& I( o; z - class="org.springframework.web.servlet.view.UrlBasedViewResolver">
- x' X @& n1 P - <property name="viewClass"* t. M& G. A! C7 @4 {5 h/ N! b
- value="org.springframework.web.servlet.view.JstlView" />
0 r. G/ j( d1 X1 K$ T - <property name="prefix" value="/page/" />
+ U9 e& N' D6 Y6 r - <property name="suffix" value=".jsp" />" D* |8 R: s: V( j
- </bean> x( n' E) `7 l9 L q$ s
- </beans>) n( R6 H L' y$ i/ y( a
复制代码 8 J* {) r9 C. c0 ~5 d, P/ `
mybatis-config.xml:. I: c1 r: w& E2 J1 f- }* u$ E
- <?xml version="1.0" encoding="UTF-8"?>
3 Q/ @$ W2 `2 r: q - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
) z: z( s# Y# X - "http://mybatis.org/dtd/mybatis-3-config.dtd">) U! x, v3 ?& o" T' u6 m: a2 `
- <configuration>3 B# l# K: }, H) u m
- <typeAliases>6 w2 o: B N# G# T( E
- <package name="com.wg.bean" />0 a- F! A3 {% h0 l, F0 S% r% l
- </typeAliases> |# [2 E7 s4 w0 S3 P' u
- <mappers>! P5 D4 h* ^( A' _1 M6 Y/ [
- <mapper resource="com/wg/bean/UserMapper.xml" />6 f" }5 ~3 k9 W9 P( ^% `0 U
- </mappers>) U7 j# F& \+ [: |5 \
- </configuration>
复制代码 root-context.xml:8 l8 n1 V+ C# h* _, r. d
- <?xml version="1.0" encoding="UTF-8"?>% T9 _, c8 g: B
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
" L* O/ D: O% t( c- ]3 x - "http://mybatis.org/dtd/mybatis-3-config.dtd">- e/ w4 J3 L/ g! K" N/ k8 o1 ^
- <configuration>
6 P+ L$ D' n; K% k! K) I9 c0 } - <typeAliases>3 i8 `$ w) c, A* f$ R6 z( l
- <package name="com.wg.bean" />
2 T$ ^& K* k* Q0 a5 h- K, ^ - </typeAliases>
* x# z9 G8 L j% r) ^ - <mappers>! {- U L9 y7 ]
- <mapper resource="com/wg/bean/UserMapper.xml" />( m/ ^5 i K; j' V! _+ K% k
- </mappers>* I3 N9 @* L0 S
- </configuration>
复制代码
5 ]% s7 p J) g- auser-context.xml:- <?xml version="1.0" encoding="UTF-8"?>
' Y/ X; I# |* }* O& c' f2 w; b - <beans xmlns="http://www.springframework.org/schema/beans"+ P4 E# ^: [* c: n9 [! E
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ `6 e$ J2 ]$ P8 Q- _7 W9 z9 \ - xmlns:context="http://www.springframework.org/schema/context"+ I' l0 d. u! i' Y( y3 d# d/ l
- xsi:schemaLocation="http://www.springframework.org/schema/beans4 d0 b3 Y' x) ]6 U* H- u* `
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
$ W* K( |% p* c0 G6 l# [ - http://www.springframework.org/schema/context
/ m3 f8 w( `3 L - http://www.springframework.org/schema/context/spring-context-3.2.xsd" >
2 i4 I( f0 q: z* W) k - . g: j. X+ o" ~
- " _# F3 L' C0 [6 c7 W
- <!-- 用户Dao -->
2 M2 P( V7 ` [0 v! W1 T3 `1 \8 D - <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
5 M: O: e! T" t, R - <property name="mapperInterface" value="com.wg.dao.UserDao" />
3 I. P+ h, i' d- }# X - <property name="sqlSessionFactory" ref="sqlSessionFactory" /> 2 e- D) N' _- K3 c% R$ f" k$ j) b
- </bean>
8 d* d u9 R( _4 E. m: A1 I1 N3 B$ W - 3 P/ H( C5 A* @9 X" M9 ?) ]
/ r6 j* \# y( Y& Y% O. w- </beans>
复制代码 $ y* D6 [+ |$ L
* o7 d( w* X% _" K, E+ F" J. p9 R9 D3 z0 A% W
链接:springMvc整合mybatis项目源码
; R& {! W- r* R 密码:
) N- J N& u+ N& i2 m& ?, `
( k7 \6 i8 J4 K8 a% ^; U; C, k9 C- D$ p; ~ t7 n! @" O; j
0 h8 W" [- p" V: e
|
|