TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:+ Z& h1 G! V' U0 ^; {0 ]# g
为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:
2 U* H5 i! d9 F1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。: _, w& c' K& d/ |0 R
2、性能优秀,这是一个最能吸引眼球的话题。+ O7 H1 Q M7 N4 m
3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。
3 g3 n7 o8 {' B' f: V1 B2 G! p* S% K
如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。
6 R Q3 U# r+ h0 _' A8 }6 P8 N. |! m* c: C7 o% e
Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。
6 c/ O+ w- Y- c/ P8 U8 L
6 `0 D8 Y8 }/ FStruts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。) A R! f4 B' V! K j7 n3 ]) J1 u) [
/ \0 p/ a1 ~* r: \* D0 K) e' TSpring3 MVC的优点:+ {% f' B0 \; S' N: J: o4 E: O
1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。+ L0 }; e: D/ z+ h& J* j
2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)
1 \! y9 s. p3 \3 M# e( m$ @/ c3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。) U/ x' U8 Q* O( o$ u
$ N! v, A( H/ `; YStruts2的众多优点:6 z6 E% Z: r. S" w
1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。
, W. g3 a" p! G- ~7 u* z2、其它方面略...
T/ H+ G3 }6 [# }: `==============================================================
% E/ X- n1 v: \( e% |什么是mybatis+ f. A- H3 |" m; r+ s, s, f
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.0 ]6 I9 V* b! l* K/ Z
) [' F9 `$ ]$ form工具的基本思想
+ a5 }* ?& |" G( I$ Y* \ \- u8 U无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:
8 R5 [% }% m! {% S1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.
' J7 D4 R W$ R8 b: J! z5 Q& h2. 由sessionfactory 产生 session' @. @) ]( \ c' @$ F
3. 在session 中完成对数据的增删改查和事务提交等.8 w3 M" `4 j) I% n3 r& s
4. 在用完之后关闭session 。
. ]+ t) M8 v$ t5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。
0 G5 \, X+ \+ o) P) M" m7 w- _5 @" T6 D: n8 f _$ v
项目说明:实现了用户登陆demo。' _% p5 v3 ]- u, L0 z
项目配置说明:
4 t: c/ k" }3 T' ~$ a+ bweb.xml:# A' m4 T: l4 s
- <?xml version="1.0" encoding="UTF-8"?> ) f! Q* s3 Q. S3 J. a. r
- <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
$ Y, r* V- C; X5 T7 z# m% Y2 y) { - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 |. V7 M: t- T - xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 1 w) Z0 O6 S8 F
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> ; V/ n/ y" e" Z7 k, [7 h
-
( A: M5 n4 o3 r ^, t8 G) U2 b - <!-- 监听spring上下文容器 -->
( ~7 n. e) l- x5 ~/ N - <listener> , Z3 e# e: ]* c: ?
- <listener-class> 2 P1 O" ^3 t5 K8 z
- org.springframework.web.context.ContextLoaderListener . Q4 _$ B7 d, \1 d$ {. p- J
- </listener-class> 6 l a& n3 [! K
- </listener> / a7 R. R9 \' u3 k$ u' Q( S
- 3 c& ?5 ]& U ^
- <!-- 加载spring的xml配置文件到 spring的上下文容器中 -->
3 j+ j+ n+ C+ W* H% y U - <context-param>
7 a+ V$ F/ h2 V$ {$ j6 ~ - <param-name>contextConfigLocation</param-name>
3 P) Q/ j/ P$ P! y1 S - <param-value>classpath:*-context.xml</param-value>
7 H5 \" w: }3 F: n1 W% a - </context-param>
# k% X. z0 |/ N -
* `. z8 v! [, F+ }- q/ z - <!-- 配置Spring MVC DispatcherServlet -->
4 } V) L0 H; n" f; N - <servlet> 0 P8 w0 U9 n% C( `5 G5 `
- <servlet-name>MVC</servlet-name> 2 V$ I, v/ a& R7 N$ j# Z
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
: O4 [+ t S' x; g9 j8 S - <!-- 初始化参数 --> Y Y! i1 m+ X# e3 C- `
- <init-param>
" ] [* K5 E ~3 ^- _$ O - <!-- 加载SpringMVC的xml到 spring的上下文容器中 --> + [) v) t0 y+ O5 D$ ]- S! ^" j' `
- <param-name>contextConfigLocation</param-name>
, n8 q8 E8 t/ U& S. H; V2 h6 m+ D* v - <param-value> ; Q/ e5 j% V, M! A
- /WEB-INF/classes/mvc-context.xml
. f* y5 t/ w- V - </param-value> 9 Z) E! m# S3 Q! w+ \0 J0 \
- </init-param> 0 E6 ?- Z9 `0 e3 J4 B( L$ D* I
- <load-on-startup>1</load-on-startup>
/ U3 J$ b" N! t - </servlet> ) `+ z+ m' J2 V5 Z) u
-
* L. b8 s1 z" F1 G$ m8 I - <!-- 配置DispatcherServlet所需要拦截的 url --> P0 ~7 p% `) T- q9 t% v: P/ A
- <servlet-mapping>
" d) z0 q# k: o7 r% {4 A0 S. V - <servlet-name>MVC</servlet-name>
$ R) D w$ ]7 V" o$ y J; N' { - <url-pattern>*.do</url-pattern> ' |+ c' y: \ O$ ?& ^; P" `
- </servlet-mapping>
+ f/ ?- i0 d$ R) C5 i; f2 q4 R3 G. @, `( A -
) d% t! H/ w8 ]) s1 q {: ? - <welcome-file-list>
% G5 z- T4 `; x5 S \ - <welcome-file>index.jsp</welcome-file> , |. D0 s/ c" V$ e
- </welcome-file-list>
2 Q7 C4 w9 }( l; ^8 p - & J5 H2 U( _7 U: U8 ~
-
c, O5 e6 q1 F, W9 O - </web-app>
复制代码
. J R0 @9 f& X& _& K) K2 }mvc-context.xml:
% H- D5 `2 r) J- <?xml version="1.0" encoding="UTF-8"?>
" Z' A! G5 D0 [5 Z/ K* f# K$ u - <beans xmlns="http://www.springframework.org/schema/beans"3 f# G5 Z) _& ]! d
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"/ ^& k5 C, W2 n) L2 k
- xmlns:context="http://www.springframework.org/schema/context"0 w' a% }" W) X8 w$ P$ {+ R
- xsi:schemaLocation="http://www.springframework.org/schema/beans/ M8 A, A l$ V0 R" R5 }0 k; t
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd0 y p( N5 u; c2 N
- http://www.springframework.org/schema/context7 p5 c- B, T8 {
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">; b$ n7 y5 m4 d) N4 ?
5 B* E" C' h' K7 N) \8 a- <context:component-scan base-package="com.wg.*" />7 e1 V% f$ `9 t
- 1 I! ~5 m' r8 ~# l' p' }
- <bean id="viewResolver"
) D6 @7 z! j* O. {/ g O7 g - class="org.springframework.web.servlet.view.UrlBasedViewResolver">
6 q' t5 g5 S6 \) F - <property name="viewClass"
* N0 Q/ i. J( y3 `1 i J( k. T( E - value="org.springframework.web.servlet.view.JstlView" />
. t4 @9 v* e# b, v - <property name="prefix" value="/page/" />7 ?) ?! P, k% w+ t/ F; J
- <property name="suffix" value=".jsp" />/ [. M1 ?8 b0 s4 N; V
- </bean>
9 s" m6 K3 U! [! |1 X/ K G - </beans>
" a. J4 V) |% `! `# Y
复制代码
( w5 Y3 m5 R9 z( wmybatis-config.xml:
% L% I [. D0 ~; K" ]# }, {+ F- <?xml version="1.0" encoding="UTF-8"?>
# F l& _' X# o3 U% ] - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
. Z6 @1 i/ h5 A& V5 f5 Z - "http://mybatis.org/dtd/mybatis-3-config.dtd">
2 b, R; Z7 X% `; e& H: i - <configuration>
+ H3 k& U( }9 ^& K) Z/ f; T/ f. k6 v - <typeAliases>1 ]: ^* s+ I! w$ l
- <package name="com.wg.bean" />( U9 s+ n; l5 j
- </typeAliases>! | Y" b; F* i: i! O& G
- <mappers>" c- l* ~1 G0 V0 a6 q" s1 Q
- <mapper resource="com/wg/bean/UserMapper.xml" />
7 Q. x) V% ?" b0 o - </mappers>
4 G8 _6 l, ?& `0 U+ p - </configuration>
复制代码 root-context.xml:
N' q' l4 `4 s# c6 @- u0 D. L- <?xml version="1.0" encoding="UTF-8"?>
7 n9 t* w2 Z( b+ C, l6 X" Z/ J0 i - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
% b) R' {1 b) ]) T! b+ q - "http://mybatis.org/dtd/mybatis-3-config.dtd">% |$ b" |3 n/ ~' A, T% l
- <configuration>
) e& @6 W9 U0 p) Q4 _& m' t - <typeAliases>
6 {) f9 V9 e0 S* `$ j - <package name="com.wg.bean" />) r* O2 p9 V; s# j7 L
- </typeAliases>1 s: M/ W K* r
- <mappers>) x9 ]8 [& T6 |* f
- <mapper resource="com/wg/bean/UserMapper.xml" />* w) x ~ e4 ?) ~8 G( @4 q
- </mappers>
" ~' z# [0 d6 B2 G& |1 H - </configuration>
复制代码
2 L, A' e& h I0 S9 _$ euser-context.xml:- <?xml version="1.0" encoding="UTF-8"?>$ P9 n& N' @3 ^7 ]! h
- <beans xmlns="http://www.springframework.org/schema/beans"
2 \7 _0 d2 O, M6 r: ?+ @ - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
, d0 \5 _5 y4 ]; e - xmlns:context="http://www.springframework.org/schema/context"! g+ `+ W2 [2 |* A6 `
- xsi:schemaLocation="http://www.springframework.org/schema/beans4 R* q6 [ k# Q& Q( n$ M/ A( d2 g
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
, i. h! x& T4 B( y1 H* A - http://www.springframework.org/schema/context
2 K9 d1 ~9 ^; E4 [. I - http://www.springframework.org/schema/context/spring-context-3.2.xsd" >
+ I6 K- p; X$ }% v -
8 b4 u, ^. v% D( o; Z6 M$ s6 G - ' W5 ~% L- g5 H. H/ I ^
- <!-- 用户Dao -->+ V6 Z T9 G; e* X! k8 W9 [
- <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> # h& C! E. J. z! o4 x9 s
- <property name="mapperInterface" value="com.wg.dao.UserDao" /> & N9 q* K {2 d
- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
+ R9 q) Y! G; r- k8 K D p - </bean>5 t- d6 z8 t" ]
- 5 p4 x/ D y- G6 x% f" F
9 e4 Z: B8 o! y9 j7 ~, h. N2 q- </beans>
复制代码
# F4 O$ r. w8 a# D) V& o: {4 K. {& X' }3 d5 K/ i0 f: z
1 H9 B6 j9 M8 W8 ]4 h0 t; }; ?
链接:springMvc整合mybatis项目源码1 j& t# q/ L, z3 N/ i
密码: L0 \5 S w' { b! [& R7 c( l& Z% y& \
5 X: K) a% Q) q3 b
& Q3 T" M5 s# t4 z0 f0 S
6 L) a5 A& L8 d
|
|