TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:. s0 n) d1 z; U1 r) V
为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:" O* s4 s" n; i
1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。
# J+ U1 p9 k, j f$ I/ G( g6 w2、性能优秀,这是一个最能吸引眼球的话题。, [8 L! H1 R) h7 K9 Z6 Q3 ~
3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。/ l* w7 s P2 P( l, n
: X* ?# j+ H( P) b% c. H如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。
+ _5 Q9 g0 o8 o4 o# L# O8 |5 j% I/ s& B) G8 K# P
Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。
$ b' K0 c$ Q: P3 ?0 x+ _1 _
6 K4 B9 ?- l9 R* @4 hStruts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。0 R5 t! D: R7 _9 M5 X O: l
# T" f! J1 V; ]1 H% ]7 m/ ~5 n2 ~Spring3 MVC的优点:1 C' Y! Y( H! T; z- e
1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。( D0 m5 C1 X: u8 G
2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)
" P3 J: ]; X- d; a. W: w9 J3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。7 i- X$ X3 ~7 Q( q
6 ~$ t# M2 C' T& p UStruts2的众多优点:
- J+ U) ~0 c" l$ ]5 S1 p1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。5 `7 A" v6 E/ f& ?6 ?
2、其它方面略...
" x- Z! w, Y2 g; Z5 [' x+ H==============================================================" q& }) ?& O1 ?0 `- z
什么是mybatis# G) r* g! f8 y# {: n9 h* Y
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.0 q( C) @+ V+ C& W; @4 U
$ v" A3 t/ y( O9 a; F& x7 e6 Sorm工具的基本思想
, X! k9 W2 V5 M# g5 ]无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:. f1 O7 }9 E& ?- X8 i) n
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.
5 q. R6 d0 c/ P, {2. 由sessionfactory 产生 session8 m, N. p* N: D. B
3. 在session 中完成对数据的增删改查和事务提交等.% c. @0 V! n- W/ [$ v [) N
4. 在用完之后关闭session 。
, R7 @5 ^: M! K5 R5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。
7 j/ r/ z, O! M' F
$ b+ l( w8 `* K1 R项目说明:实现了用户登陆demo。# R! [0 B5 ~/ q0 F4 `. w6 C
项目配置说明:
% c4 ~9 ]& s' d/ c3 \/ S* G" c$ @web.xml:* ?) o0 r2 l0 k; z
- <?xml version="1.0" encoding="UTF-8"?>
9 C$ ^8 `! W' E( A, X - <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
8 D! o5 h. j# e/ Q- }$ E, ^; I - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
; t6 ?: ]/ O* [6 N. c - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee , c# Y8 f5 `# K- u2 U {) _; u4 I
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> ) A: Q* M/ E7 I- [
- 3 i3 G8 m# m# t( u$ p
- <!-- 监听spring上下文容器 --> 8 A- S7 ?4 F- C& X/ R, I
- <listener> + g: G- n; V/ N* E/ p
- <listener-class> / g# X6 _5 i% Z8 r$ P
- org.springframework.web.context.ContextLoaderListener
& g" \! N; `9 @6 y! G; d6 L& G" { - </listener-class> Q$ W( d5 S- w9 Y6 t
- </listener> 4 i) v1 U4 a% d. a# E/ z& J
-
7 r. h; L8 D6 W$ C( g - <!-- 加载spring的xml配置文件到 spring的上下文容器中 -->
X( e. C4 l$ O$ o - <context-param>
* Q0 p7 X' J2 L9 Y6 ^ - <param-name>contextConfigLocation</param-name>
5 s/ d- r: Q* V. W7 e$ F0 Z - <param-value>classpath:*-context.xml</param-value>
1 D0 K% C7 n& n( k3 ~4 Y - </context-param> ; z0 D& g& W. r
- % P; Y2 I7 [( Q5 d; R6 Z) p: n
- <!-- 配置Spring MVC DispatcherServlet --> 8 N. F" R5 r) o7 ?9 K/ F2 z
- <servlet> 6 w, \5 V& l! J1 S& s& d2 X
- <servlet-name>MVC</servlet-name> " B- l# j' j$ Z2 Q8 P& z9 r) Z+ T% ?
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 4 E9 x; u! w: C8 Q7 A7 I( k
- <!-- 初始化参数 --> , b/ a: P* f; z! E/ S) y2 m% Y
- <init-param>
: h% `7 U0 b3 r, m! S - <!-- 加载SpringMVC的xml到 spring的上下文容器中 --> + k* A' D9 s, d) n5 f/ E9 _
- <param-name>contextConfigLocation</param-name>
+ M/ T$ S2 p2 `( Z - <param-value>
( e& O4 p7 k: i: U+ ^ - /WEB-INF/classes/mvc-context.xml
* K8 G3 q9 w9 g$ K - </param-value> 6 P, B9 Q r7 s1 z/ l# K& Z4 W* _
- </init-param>
- [5 h f, n7 {/ a4 r - <load-on-startup>1</load-on-startup> " K8 y7 P+ H6 i1 j, o
- </servlet> 2 ?( p% l- }6 [
-
% S- X& [* m/ f: t4 L3 A- V - <!-- 配置DispatcherServlet所需要拦截的 url -->
$ o$ q( h% b$ L' B - <servlet-mapping> 8 H4 m! R& y: k) | o
- <servlet-name>MVC</servlet-name>
0 s. F) Y* Y# u# D - <url-pattern>*.do</url-pattern> ; `0 ^; E& j! p
- </servlet-mapping>
) |% ?) N7 i2 `1 n7 x4 G8 u -
$ e& l+ C4 _/ h" e4 B! E& U/ c+ t - <welcome-file-list>
! Q% z5 i% P6 D' t. A& g - <welcome-file>index.jsp</welcome-file> 4 X R T/ B+ P- f7 [* [
- </welcome-file-list>
# _4 q j! o3 J6 w# r( E -
4 `; _7 ?3 h/ {( w2 o -
# R) W0 Q3 D! x% m% _: G/ |2 Q, z. s - </web-app>
复制代码 5 ]$ @' h$ H$ u/ ^
mvc-context.xml:
. p6 d; n7 F5 Y8 V7 g0 T- <?xml version="1.0" encoding="UTF-8"?>
1 H, e0 B6 m2 R9 h- P9 E6 { - <beans xmlns="http://www.springframework.org/schema/beans"
7 a+ N6 X7 Z4 P& ^9 S l - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"6 f% @/ c( q! a' e
- xmlns:context="http://www.springframework.org/schema/context"
6 r+ Y1 l: g/ R; a/ x - xsi:schemaLocation="http://www.springframework.org/schema/beans: n/ i% s8 G6 ^8 X6 ?$ ^; p
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd9 q. ]% j. u" P8 @1 ~& w# n
- http://www.springframework.org/schema/context
6 b0 A# [. Z/ a+ k - http://www.springframework.org/schema/context/spring-context-3.0.xsd">
7 S5 L5 N- g7 L
- \6 o; H; V; M: o- <context:component-scan base-package="com.wg.*" />: ]; D2 L+ ?& h7 [
8 w/ n m/ L) @7 F/ q. i- <bean id="viewResolver"! x. q( | e0 B0 J$ K
- class="org.springframework.web.servlet.view.UrlBasedViewResolver">0 }# {- v9 `5 k
- <property name="viewClass"
/ }0 g" B2 v# o" ]% R! ~( E3 C, b - value="org.springframework.web.servlet.view.JstlView" />7 ?3 T: o2 s1 T, z+ e
- <property name="prefix" value="/page/" />. K3 c) O) B& h q
- <property name="suffix" value=".jsp" />
3 [' N$ \0 ]. z, L" @, A" x - </bean>0 G: r7 x7 k. G
- </beans>, K, N7 t. _" Y* u9 [; g) T& j ^
复制代码
! q1 ?: z2 v( b9 @( R7 i: l# |mybatis-config.xml:
/ R, ?9 ?9 S; @ `- <?xml version="1.0" encoding="UTF-8"?>
G2 X( H! R' Q/ m2 A- F# S - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ' a, U, M2 x1 a) b: f; J- m
- "http://mybatis.org/dtd/mybatis-3-config.dtd">7 Q. I) r, Z2 Z9 J
- <configuration>6 l, O. h2 @' M9 N
- <typeAliases>
) r2 c% }" a1 A3 J - <package name="com.wg.bean" />
( z$ {+ b/ e8 R) { - </typeAliases> @% a8 k: L& L6 d% N
- <mappers>
7 @- E7 ~4 D6 ~2 O - <mapper resource="com/wg/bean/UserMapper.xml" />
1 ~/ J3 w4 z' n" Y - </mappers>% Q3 \0 G* w: \# Z
- </configuration>
复制代码 root-context.xml:
6 z5 h) M( K; c* t* O" ~- <?xml version="1.0" encoding="UTF-8"?>
8 {: J! \! F( P6 f - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 5 u0 h$ l# D6 f. k& A Z9 b; f
- "http://mybatis.org/dtd/mybatis-3-config.dtd">' q( b" w* d8 e+ R4 o
- <configuration>
/ Y; `' M2 k9 Z - <typeAliases>
4 p3 \8 s$ T4 F7 Y/ F( ? - <package name="com.wg.bean" />5 s" s! M+ p* L
- </typeAliases>' R9 E! O0 S- |' o
- <mappers>
' K& L ~3 d( M# t - <mapper resource="com/wg/bean/UserMapper.xml" />
6 N f5 ?& Q9 r' J& y/ i: e - </mappers>
5 f0 x7 o7 S9 D$ f) ?' u3 F - </configuration>
复制代码
! g+ b5 d( t* Ouser-context.xml:- <?xml version="1.0" encoding="UTF-8"?>" N5 u9 i: o9 u
- <beans xmlns="http://www.springframework.org/schema/beans"+ x& b+ [: ]6 [6 K. `
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance") R5 x7 S% K. V7 T: Q. `# N, x
- xmlns:context="http://www.springframework.org/schema/context"2 W! h. k8 t9 S
- xsi:schemaLocation="http://www.springframework.org/schema/beans8 p: _2 X6 \% U3 G# M+ z Q! r! C
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
# [/ W4 n0 Y, G( g9 } - http://www.springframework.org/schema/context# T0 Z2 P* A+ O/ Z% h8 N1 s f: n
- http://www.springframework.org/schema/context/spring-context-3.2.xsd" >
5 w, B" k& S+ g1 V -
4 s& m7 M' W% r8 G! I. I - g5 `* d8 `) Z* ^% Y- ~
- <!-- 用户Dao -->
. M$ U4 w. w/ Z$ I0 H5 j. ~- w9 G5 b - <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> " I* o: L2 a7 @0 b: t! ]9 q9 N) G
- <property name="mapperInterface" value="com.wg.dao.UserDao" />
. A6 }& J! `! i! g: v% x! K _) \. s - <property name="sqlSessionFactory" ref="sqlSessionFactory" /> ! p6 `6 H; S: |2 ^
- </bean>
) { a/ ?+ {3 A; i6 F - 7 @8 W2 g" }' X8 q+ e5 Y
/ Y9 ?, Q$ a8 w$ L4 c- </beans>
复制代码 ! H2 y2 g9 x% }
2 W1 h n4 T1 J5 U" B% p2 n1 u z5 p5 `8 o9 o/ F" H2 |* y. i
链接:springMvc整合mybatis项目源码
8 m7 t0 Q# n$ E. a: D8 X 密码:
. A2 Q \7 `7 g: f: Q" s8 @" x6 _( @5 t! C
4 m0 n# Q* `3 }: y0 U
% z0 @- a7 s/ |8 K' @/ t4 i$ W |
|