TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:6 m) W5 `2 b; Z9 C0 K
为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:
$ G; p! ? C2 N+ X3 @7 X3 n1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。1 @8 D) x* e: c& b1 m
2、性能优秀,这是一个最能吸引眼球的话题。
[: X' r. E# E1 p1 Y3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。
9 [2 C1 P4 G- o+ X* g
4 R2 T. M' y4 @) i4 f7 i如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。( u1 f5 S8 l, E$ p* v
1 n8 `0 q; D u# dSpring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。
7 X8 z, x1 h- s3 @# ]( j6 _- h9 g; h
Struts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。9 ]! k% r2 n B0 i" M# s
+ i6 ]/ W0 u& x3 O* p. [" U9 y
Spring3 MVC的优点:
' B F* Y. V5 E1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。# l, Q. z( m" M- |, v: N( J$ D I
2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)1 C+ b7 @; H- ^( a; k* m
3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。
+ `" z! p& x1 x# `
2 m' }! E9 ]( ~; g$ x! sStruts2的众多优点:4 g2 C. `/ }- b
1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。
! Z* o3 X d- D+ d2 k. L$ t2、其它方面略...
- z. y8 h6 L2 n9 P+ {" C==============================================================
/ d3 p2 n' L8 f3 X; _: @什么是mybatis% r4 i% T: x O3 _
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.) l* a7 `9 `" |' x* N7 W, |" ~
; g: Q1 Q- |# Y P( D
orm工具的基本思想1 ~" x1 s' H8 k" m! \/ u- z- n
无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:% i P' m9 n& ?
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.
' b5 B- t* _) d& g6 x2. 由sessionfactory 产生 session7 }4 v( S: u# G# {( T. t$ W+ `% P1 [
3. 在session 中完成对数据的增删改查和事务提交等.
" C0 X0 A4 f7 [ D4. 在用完之后关闭session 。7 Y1 e& p0 ]" z5 ^% B4 }/ n
5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。
, }8 f1 p! M) S. k. Z- C2 w0 V1 E) g$ a; a
项目说明:实现了用户登陆demo。. D# m7 t8 I) c% z! i1 l
项目配置说明:
. O' g) z" U$ u4 u2 Nweb.xml:
9 H9 E5 W; E' i& P7 [) y- <?xml version="1.0" encoding="UTF-8"?> ' ~ w' C$ S* I- H) s
- <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 8 Q( q% Z8 d; v
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
. K# s( |( }& d - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee # a6 P3 F; `! {; K9 {
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> ' f' O1 b& Y" H" Y( E+ O# @7 d- E
-
8 g) o' L7 Y o - <!-- 监听spring上下文容器 -->
2 K! T& r# y9 D - <listener> . h/ b3 W* ?7 b( n
- <listener-class>
+ T. @6 \; |4 Z: Q. s - org.springframework.web.context.ContextLoaderListener
0 P- @4 u% b0 A3 H: ^" b5 ? - </listener-class>
1 h! R J) a; r* h" t) p - </listener> # k) ?5 H" P& l: S s; M
-
4 o1 a+ {9 D) g' Z( I# T, H - <!-- 加载spring的xml配置文件到 spring的上下文容器中 -->
. M5 K& t' D8 N. W6 [7 m( c* f$ R - <context-param> 9 h6 y1 K8 [ k
- <param-name>contextConfigLocation</param-name> . b) M* s0 M6 ~1 S( ?
- <param-value>classpath:*-context.xml</param-value> ; L3 g+ D& X! \, h
- </context-param>
9 o Q' C C; A/ R3 x) i7 ] -
% Z1 |2 E0 f* o1 z( H2 L' D, |! { - <!-- 配置Spring MVC DispatcherServlet --> ' K! y4 ~% u8 E% U& B6 d
- <servlet>
5 ~) b1 y- G' I1 u - <servlet-name>MVC</servlet-name> 4 U5 e) z2 I) U( n
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
' z, p, A8 |0 L; H+ X8 F$ S5 |+ i - <!-- 初始化参数 --> 7 P0 c# A7 Z! z5 L2 P! s
- <init-param> 4 B* s0 U* z/ R& L4 Y* u' S# i
- <!-- 加载SpringMVC的xml到 spring的上下文容器中 --> ' b; o/ n D. }1 r7 Z
- <param-name>contextConfigLocation</param-name>
" d1 {+ c) p$ ^8 E1 a - <param-value> 6 ^. G: f7 i( [ n5 T
- /WEB-INF/classes/mvc-context.xml
+ ?1 N& g& @. g3 ~* }% O - </param-value>
7 N$ n F' |: L - </init-param>
) f0 t# r* S1 s+ C9 A8 [ - <load-on-startup>1</load-on-startup> 0 S! U! U, H) s) D: c1 \
- </servlet> 0 E/ V; B$ b- H( [: T
-
: }, C0 o5 l4 {, _; k - <!-- 配置DispatcherServlet所需要拦截的 url --> 5 i, V( x W' Q! F
- <servlet-mapping> # D' A; p7 \* h) C4 @2 r: L
- <servlet-name>MVC</servlet-name> & w/ ?, T4 i' l7 h: i1 z! [9 g- }
- <url-pattern>*.do</url-pattern> , _" Z/ `# ^* n( M# E' ~/ V
- </servlet-mapping> * m0 Y2 D* g" w( R
- 3 s+ A8 A4 G" |0 x4 h$ J% l
- <welcome-file-list> . O# `, z! M3 \) D0 r! _
- <welcome-file>index.jsp</welcome-file>
) x- u$ A" I9 R$ P - </welcome-file-list> . I3 r/ v" a5 y
- . G2 A) _; v2 h1 e5 |
-
5 _- c; L; o7 Z/ d0 L( q# d1 @) V - </web-app>
复制代码 : V8 e$ w" N$ s( V `' ]
mvc-context.xml:
1 ?& h; G0 L2 u- <?xml version="1.0" encoding="UTF-8"?>& ?5 |! t. y$ c1 u" }# G, D# P, T
- <beans xmlns="http://www.springframework.org/schema/beans"
: L( r7 l Y: Q. W* S! K - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
, g8 E: v9 o- u. K; r - xmlns:context="http://www.springframework.org/schema/context"
) F! f! x* Z2 d6 a - xsi:schemaLocation="http://www.springframework.org/schema/beans
, I0 H" F: M1 _$ S5 \( H# s/ ]. U - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
" V* h$ ~6 b O/ u - http://www.springframework.org/schema/context
W: I- K3 \9 Q; d5 X) E- V - http://www.springframework.org/schema/context/spring-context-3.0.xsd">* _, t. {6 \1 w1 V- A$ ^
- & P4 L9 b8 H! L7 y7 d) N0 E
- <context:component-scan base-package="com.wg.*" />, W& W# e8 z& n9 v# b
" C3 S/ W1 u7 `( t. c9 C- <bean id="viewResolver"; T( k1 i+ i$ f7 g2 Z; O5 d
- class="org.springframework.web.servlet.view.UrlBasedViewResolver">
# L \6 B. I5 m. A: L- p - <property name="viewClass"1 k" Q' \& W2 g; H: V( n4 W2 S
- value="org.springframework.web.servlet.view.JstlView" />
1 c3 s; _# q4 x4 q8 c - <property name="prefix" value="/page/" />1 s5 w) e/ h; i3 P, J3 M
- <property name="suffix" value=".jsp" />
+ z' j: |! g3 w; }. A- t - </bean>
3 H; R5 z' I8 p4 g# R - </beans>
3 J7 ~3 U4 W2 ]7 U: H# ^2 z
复制代码 + ? m2 M7 w0 S7 g# w/ L$ y5 t
mybatis-config.xml:
: _2 b1 i/ b% ? D- <?xml version="1.0" encoding="UTF-8"?>
' Q' r0 u' O! l+ ]+ s - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
4 o0 J1 A! ~7 M8 r9 w - "http://mybatis.org/dtd/mybatis-3-config.dtd">1 j$ O6 x; z) L' Y
- <configuration>& t$ i3 S) r: o
- <typeAliases>
% z6 b6 d5 |6 B2 x - <package name="com.wg.bean" /># w1 |* I5 N4 }8 l. z w5 o9 \+ J
- </typeAliases>! f1 V# _' _! Y, V7 ` B
- <mappers>7 I5 }- h- I+ l9 m
- <mapper resource="com/wg/bean/UserMapper.xml" />+ T* j3 A9 z3 P% f2 t4 t
- </mappers>3 `( u* T5 k7 G' s
- </configuration>
复制代码 root-context.xml:
+ E. |" J1 P& a/ r0 D- <?xml version="1.0" encoding="UTF-8"?>
+ {3 o" U' x* k6 f - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 2 Z* f+ t6 ~ r3 f
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
7 N& _" m: s$ v+ q( y - <configuration>" d/ c8 z. v/ G, G! m5 p: l
- <typeAliases>
; ?+ z# F9 `0 H& f! U, | - <package name="com.wg.bean" />
/ G2 B0 h, { N: ]4 x. ~0 k) z! f - </typeAliases>
8 l4 r, f7 w0 } - <mappers>
+ s; I e/ D: \4 [; F2 k$ ^ - <mapper resource="com/wg/bean/UserMapper.xml" />
8 R# v" m- t$ }3 t, T' `# B7 K* R: u" S, |2 e - </mappers>
8 X1 e2 L- ? ` p( C* A7 a- i - </configuration>
复制代码 / B* U9 s0 @* v' S* t8 x% E9 t
user-context.xml:- <?xml version="1.0" encoding="UTF-8"?>
) D2 Q6 R' g; Z D' y - <beans xmlns="http://www.springframework.org/schema/beans"/ j3 I A" Q1 O4 ~ T5 K1 @
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"9 V( s) a1 @) q0 L- z3 i
- xmlns:context="http://www.springframework.org/schema/context"
) {" P6 _# \% d' W4 ?0 ]. f6 E# u - xsi:schemaLocation="http://www.springframework.org/schema/beans
; _; W' O$ A0 H( ^ - http://www.springframework.org/schema/beans/spring-beans-3.2.xsd4 e+ j" w. M l( z( t
- http://www.springframework.org/schema/context1 K: C) e, d2 ]# | z9 Y
- http://www.springframework.org/schema/context/spring-context-3.2.xsd" >
& t+ a; J! M+ K: R7 x" p9 y S8 { - 2 o9 Y* _7 T4 O4 d4 V: P
-
0 v0 U7 P1 l2 }2 }( ]# a - <!-- 用户Dao -->
! Y$ F' E @# p - <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> # K( E- k6 ~2 f
- <property name="mapperInterface" value="com.wg.dao.UserDao" /> 5 z7 l6 B7 ]5 N* B
- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
( {0 k r" }/ x% w( f+ u! \ - </bean>" ]/ L7 O- q4 v1 I* D+ E
- & {! R& S- L. X0 s4 n
9 e5 z5 a; ]& W& s- </beans>
复制代码 , P9 J* d- h2 U+ K0 [+ C/ G
$ ~& s5 t8 B% C4 N. b. t7 d6 v/ f8 P
' x! k; l* C5 ^$ {+ @% u" _+ O链接:springMvc整合mybatis项目源码7 R6 y3 n7 \" G6 a/ l0 C
密码:. u# R7 m4 B4 j" P
^8 ]; l: P) _, c9 W. j4 V' O8 `! k) \6 x* S
; C0 A& W" {) a$ U( [% S4 p8 Q |
|