TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:
/ e# O' ~% |4 z4 y为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:- G2 W4 _6 U7 Z: G
1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。4 ^$ K. P# q# V' d+ q
2、性能优秀,这是一个最能吸引眼球的话题。
! }* z+ e! F. a. d1 H( r+ ]! ]7 F7 J2 E3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。+ ~: z$ G9 w9 A0 H
" Q: Y1 G) G' n% [( s
如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。2 \% }9 D' j8 ~, Y$ ?
# n9 X2 j! G6 [( E" R9 LSpring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。
$ I) ?" X4 h/ c' G; o
0 p$ ^1 f" i" Y4 BStruts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。1 R: R0 T$ b( l% A0 I( l. V
/ J% x1 i0 T* W' o% e E3 b qSpring3 MVC的优点:
3 Q6 q% d% I1 ?. a$ R) L6 J1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。
}7 ]0 c. f/ s. x2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)) ]. l4 \- _, |% g# [0 M" e
3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。
9 ?& r3 b m C
$ O8 w7 Y4 V" OStruts2的众多优点:
2 T" j8 D% F9 ^2 p! U0 T# U2 K1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。
" A6 G: G( }: m6 g1 d' i5 v2、其它方面略... " P% Q7 P3 A& u% b( H1 H( c% Z
==============================================================
% ]* t& ]% ]# [ z# |" V& r" M! c什么是mybatis* `3 `6 i) d$ p# j4 x$ @
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.8 \7 T/ J5 e$ P2 ^/ e( a3 a
7 x9 b* F* [6 P9 e; ^" V! k
orm工具的基本思想
) C8 _2 C8 W& f无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:) s4 e2 \4 ]5 }3 N- _ U
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.' j# s% T" \' R; u+ _/ U
2. 由sessionfactory 产生 session
+ M1 }2 e) u( Y( f s: I3. 在session 中完成对数据的增删改查和事务提交等.
( i( X# b% J# W4 j4. 在用完之后关闭session 。
$ G/ U+ ^5 ^) x/ k3 ` p1 v5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。
@3 X5 X/ A }+ R: Q6 [8 v
) X, f9 l8 U! T( t2 s5 m项目说明:实现了用户登陆demo。, k+ k( b6 ` K
项目配置说明:' S/ ^: ~% G( L w& z m
web.xml:# z& M" D/ O/ ?* r! T N7 @
- <?xml version="1.0" encoding="UTF-8"?> & B) ?- M q& C5 G) a5 \
- <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 2 `7 |: y) D$ o8 r% c& S
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" , A3 t0 j" T3 G0 a# Y$ Q
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
/ T6 c8 T! W+ @. ~; `0 s+ ? - http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
: t8 Y7 R L# X -
7 m8 ~& n' Q8 L& u - <!-- 监听spring上下文容器 --> 2 n7 l5 l w! m" q1 @, {( _
- <listener>
; A9 y W( N- {% { N. A. J$ B# Y - <listener-class> / I5 r9 u! e+ @5 k
- org.springframework.web.context.ContextLoaderListener
# O D! @4 W5 B2 T5 g8 I( e - </listener-class>
9 T. }( \$ K: ~( } - </listener>
/ N- h2 I6 V2 G( w! v -
1 f4 V5 r& q/ ~7 k - <!-- 加载spring的xml配置文件到 spring的上下文容器中 --> 4 c) _7 ?2 |4 P' \' k7 ^, f
- <context-param>
5 b% ]2 y( o9 k* `$ N0 U* v - <param-name>contextConfigLocation</param-name> : w! u/ _; V$ ]$ c, j; G" `
- <param-value>classpath:*-context.xml</param-value>
( i' F4 t9 q+ t - </context-param>
: c/ ?! l- l. |+ o - G+ w* D! } }6 Z* }' F4 m
- <!-- 配置Spring MVC DispatcherServlet --> 0 p( Q6 g9 W! l% }# {" p
- <servlet> : K4 @# J) P! H. k& k
- <servlet-name>MVC</servlet-name> $ U6 u, L4 |6 K) T
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 0 W1 ^; z2 `: I/ x: Q
- <!-- 初始化参数 -->
6 H/ V$ K7 U7 P2 }3 U. l% v* j7 F; Q - <init-param>
2 \9 Y; Q0 a9 N$ i - <!-- 加载SpringMVC的xml到 spring的上下文容器中 --> 7 R2 v- K6 X* P7 q% i: l. g( \
- <param-name>contextConfigLocation</param-name>
' q- [, C0 H s( \9 ~2 D+ n - <param-value> / A6 N- b0 y/ Z- k
- /WEB-INF/classes/mvc-context.xml
. L: j2 V2 D% ?( ~: ?8 X1 C - </param-value>
+ D1 E& S- M9 Q$ r2 t8 }( i - </init-param>
! _: i$ k3 X+ A5 |# ?8 ] - <load-on-startup>1</load-on-startup> ; X7 d; C: k& b. \/ f
- </servlet> 3 Z6 X( U7 s; ^+ A' _& ~
- 8 E7 y& B) g P" ~
- <!-- 配置DispatcherServlet所需要拦截的 url --> 0 H$ T. ]' V0 H) U* E7 @; d
- <servlet-mapping>
! d7 C4 @, Z/ {- h - <servlet-name>MVC</servlet-name> % b2 Z+ j/ ^) j9 k: ?. ~& b
- <url-pattern>*.do</url-pattern> 4 X- Q+ D( n2 u B2 Z0 d
- </servlet-mapping> 9 l/ ^+ y% p7 Y
- : N* n8 ^1 M! s+ h8 a9 o' f7 r
- <welcome-file-list> / k. N/ ]* y" \& e* W8 S' p2 z
- <welcome-file>index.jsp</welcome-file> . k0 u1 B' Q6 Y/ U0 [
- </welcome-file-list> ( Z$ w3 Q! B) |/ Q
-
/ N* g0 ^2 h( W3 P9 r& k @ -
6 N# ]" D9 z5 L+ ?* ~6 b - </web-app>
复制代码 " x8 L. S) P9 ?9 i" w* \
mvc-context.xml:
; \% ]; |) B0 ]6 W" q: }- <?xml version="1.0" encoding="UTF-8"?>' m( F) V2 H2 B; g
- <beans xmlns="http://www.springframework.org/schema/beans"
' _9 x5 R- L, a - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
5 \9 v/ u6 T9 V) N9 q$ B - xmlns:context="http://www.springframework.org/schema/context"- B& G# M x9 V
- xsi:schemaLocation="http://www.springframework.org/schema/beans
( q* E9 T' B6 ~* T# Z" v: r+ y A - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd4 i# a0 e2 y4 b
- http://www.springframework.org/schema/context0 I( p& N, K4 @
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
; L5 p: W: h. F: u' @
1 K* P, L+ j1 q$ a- <context:component-scan base-package="com.wg.*" />3 A( F: c7 `& F* k! ?& h
- $ {7 O9 e8 b; o5 k7 m5 q
- <bean id="viewResolver"
# W( |! m0 R" J! A - class="org.springframework.web.servlet.view.UrlBasedViewResolver">
! Q7 M, J' b- {8 W - <property name="viewClass"
( o: j/ [/ }; S - value="org.springframework.web.servlet.view.JstlView" />
z# K( G+ J/ y% ~& | - <property name="prefix" value="/page/" />
5 C/ E' M. r7 P' g; _& } - <property name="suffix" value=".jsp" />
* v0 U4 Z: k& t$ s* G - </bean>
1 u9 T" d) X) k$ x - </beans>
4 j; K+ P" F% o' U
复制代码 ' T6 v3 M% d' k, V4 @% D
mybatis-config.xml:1 ^' {3 K6 Y! |) }* \
- <?xml version="1.0" encoding="UTF-8"?>
9 a0 M- ]" s4 A; h: p" j ? - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ( K/ [6 R! F# y
- "http://mybatis.org/dtd/mybatis-3-config.dtd">& U2 K+ J- ~# H }; ]( K
- <configuration>
6 G2 P& {0 C" q, O! ~( s# ? - <typeAliases>; Q3 P# H8 Q1 d7 m
- <package name="com.wg.bean" />
% t' c. e. h1 K0 ` - </typeAliases>4 M+ l6 f7 Q( |6 U% `( L8 t0 M* }
- <mappers>: [7 S9 e p6 u+ e
- <mapper resource="com/wg/bean/UserMapper.xml" />
' B' |* C! T2 v - </mappers>( s) }: r9 i# p
- </configuration>
复制代码 root-context.xml:
w' z! ^( P* I9 O0 O" b- <?xml version="1.0" encoding="UTF-8"?>
, D0 o" N$ d% A0 {: R - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" - v: h/ z | h0 C
- "http://mybatis.org/dtd/mybatis-3-config.dtd">/ j! P. _4 V: s+ z
- <configuration>
2 L( m0 `, z! N) m' c - <typeAliases>
7 \1 {' c8 N- y% r - <package name="com.wg.bean" />" A2 d6 m; x; u# l) l: T
- </typeAliases>9 h4 R8 G) a! y& ~- ^
- <mappers>
5 f! d. q9 N ] - <mapper resource="com/wg/bean/UserMapper.xml" />
* p: F) F A" B2 G1 Y - </mappers>
* F% z2 I9 m( c: m) G - </configuration>
复制代码 ' Z& b# A/ O+ U1 g0 e, y1 ?
user-context.xml:- <?xml version="1.0" encoding="UTF-8"?>- [6 ~) ~/ C3 J
- <beans xmlns="http://www.springframework.org/schema/beans"
5 q8 U" c/ E( U* G% T - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 G: T& U9 D/ I+ P3 ~) Y - xmlns:context="http://www.springframework.org/schema/context", v8 ^/ S- Y$ T3 O" g! f
- xsi:schemaLocation="http://www.springframework.org/schema/beans
% F. `9 M* {5 T G/ t H6 A - http://www.springframework.org/schema/beans/spring-beans-3.2.xsd, }* x) e8 O8 P9 g2 y
- http://www.springframework.org/schema/context' d, ?; u+ b( w3 a- G
- http://www.springframework.org/schema/context/spring-context-3.2.xsd" ># a* z& V0 p. z7 n; J
- , N( v7 i+ |5 o; `- w; [
-
( [: C( d T0 t' T5 ^ - <!-- 用户Dao -->
3 m) q; M/ o/ s% }2 | - <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> 3 A+ b# @+ J/ m6 ]3 y
- <property name="mapperInterface" value="com.wg.dao.UserDao" /> % Z5 [, @6 ~$ {0 L1 ^8 E
- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> " F5 |* ~7 p1 d
- </bean>, y: J; L2 Z5 @7 T/ e
-
2 d9 M0 S! H, v1 G) A3 k7 _0 ^
$ G+ Q6 b4 L7 [ E- </beans>
复制代码 ) B5 ~' S9 I$ q' M9 |. S- z
- E$ _/ ~0 |! [) w- ]
0 M* r6 Y6 R$ V K% C& M8 G链接:springMvc整合mybatis项目源码5 Z$ ?/ O9 r! ]/ c+ O( J# L E6 r
密码:- H6 s; L, U/ j$ D e
1 v8 b; s3 T* x$ _& \: G, ^! |7 a" M5 s% U
l3 |" s) d, a+ m |
|