TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:
[. [7 u/ r! ~( Z/ `/ [+ S为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:
" C7 m! }& w1 N0 M, E' |- Q. d0 z1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。
4 ]+ f2 y$ Q6 _ z t2、性能优秀,这是一个最能吸引眼球的话题。6 A5 m2 q% x' ~( C/ `
3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。
( W# E( [, S& r! @
) l" V* P; j8 N) C7 s2 p如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。
, H. f0 Q$ c5 n! P. q; m/ I) V# F) R" U0 C$ F8 @
Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。' i/ D9 @. Y0 F9 H6 `
! u8 b% \6 R% Q/ Y3 ]Struts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。
) E" a7 ~% A7 N" r& G6 ?" f, t( I* Z2 [$ A) W, v" g
Spring3 MVC的优点:4 O+ o* x% x# g: `5 U8 J2 U2 w
1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。
& W/ b& I5 `& L) p' U' v8 |7 j6 G2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)/ H1 x1 [5 j d. k, q2 H9 C: D
3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。& d6 m& f/ L, s, P% q1 u/ s2 H
1 C: f% C! N7 w& UStruts2的众多优点:
2 K% V8 T& ~7 ]3 T; C- t5 r1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。
! p4 l" K8 F9 G7 _4 L$ s X2、其它方面略... 0 V1 R( t! V$ D% E, N: H, a
==============================================================
2 E9 \- ?7 f- F7 f1 M, d; r0 v0 K什么是mybatis% g9 l% P. A* b# p# Y( l+ w$ j- I
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.
3 {0 j) e% b- D; {. a+ s" \. B
4 A: B) Z$ w T; d, ~4 yorm工具的基本思想% \, ]' O* i9 O' A
无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:9 V# Z3 l0 @: O& W$ m4 ~+ v
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.4 x$ r4 M3 i. B- U6 f9 u
2. 由sessionfactory 产生 session5 ?( }$ T/ _& P" I
3. 在session 中完成对数据的增删改查和事务提交等.
4 i; n& b& u! K/ b: a4. 在用完之后关闭session 。) w9 w5 Y# d7 T; l. l
5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。7 e1 k; Y; |* ~/ h
! c. l, `* Y2 C& Q, P* o
项目说明:实现了用户登陆demo。+ M* P# {, s V
项目配置说明:
0 E. b. T- p; j1 p+ }web.xml:' n3 [$ D5 z, }( |0 B
- <?xml version="1.0" encoding="UTF-8"?> 5 g9 w' d1 b0 x0 R2 v- M7 }
- <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" ' C: v% @5 A/ F7 K$ r! \5 [' a
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" . W# @+ U* ~4 S/ _ e4 R- v
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
5 s9 h7 x2 z4 k1 g$ h' q - http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 8 c, I' \% p' `( G3 {
-
7 f- v3 p; ?0 t1 L) r' Z4 F - <!-- 监听spring上下文容器 -->
5 R, T# j" @# `2 I - <listener> ' }* x; r" ]" V% R: P
- <listener-class> - H; D- p; J% @ Q I" E+ B7 B( ~
- org.springframework.web.context.ContextLoaderListener
; Y9 ], {6 \) \1 P) g& h - </listener-class>
$ \ M8 v7 W) p, P9 r - </listener>
3 v+ z6 u5 Q' t -
. \; h3 E. l# V% U, J - <!-- 加载spring的xml配置文件到 spring的上下文容器中 -->
5 k( u5 a* |3 J6 O! v1 O - <context-param> . {; p- a! s, j- s2 z
- <param-name>contextConfigLocation</param-name> ; q; `" f9 c; y7 s/ H
- <param-value>classpath:*-context.xml</param-value> 7 ^0 L& N& Z1 Y m- h6 s
- </context-param> ( N% N) o' }' L( ^9 z4 a, d7 x! J
- ! a/ C9 G9 X/ V' W7 y$ S6 q
- <!-- 配置Spring MVC DispatcherServlet --> * z$ z4 j9 B$ K; Q5 r9 U. I
- <servlet> ; e9 x" i3 x) \4 H8 ^( e1 [
- <servlet-name>MVC</servlet-name>
, r: ^5 ?3 W* v: j/ |/ R - <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 3 o q* Q1 ?9 a( k
- <!-- 初始化参数 --> $ l. u0 K3 }; r. y5 I7 ?8 X1 S7 m
- <init-param> e- P' h+ p4 i' E K& `. ]3 h
- <!-- 加载SpringMVC的xml到 spring的上下文容器中 --> + x7 r' T( y0 _5 D- i
- <param-name>contextConfigLocation</param-name>
8 U5 n6 x) X' k/ [ - <param-value>
! A L1 P% z9 P - /WEB-INF/classes/mvc-context.xml
, M5 J' u' N6 g' k" c: B - </param-value> 3 T/ Q5 V& |6 k: F
- </init-param>
0 W2 [5 u& |' ` - <load-on-startup>1</load-on-startup>
& Q; s# v% h' k; Q9 S - </servlet>
# I0 D9 E3 q. {5 R -
2 @. I, P; j) q. g - <!-- 配置DispatcherServlet所需要拦截的 url -->
% c' k$ k3 e7 K, m - <servlet-mapping> m9 k* [) f+ s0 |, `4 B
- <servlet-name>MVC</servlet-name>
" v9 t4 I: i% g, E1 ^' D* l' b- e - <url-pattern>*.do</url-pattern> & t6 F! Y" e- u; ] n
- </servlet-mapping>
( M9 b. O; Q3 n+ ^( q; ]; N3 o - ! X& o! t6 p& {2 R) u8 e% ?6 |
- <welcome-file-list> $ n. H7 o* L0 m$ a; \
- <welcome-file>index.jsp</welcome-file> 5 `( ?( `) F4 {" J% J ?
- </welcome-file-list> - x* {% ]% K8 z# q' I# ~
-
+ }1 I1 @1 z3 @2 |, o/ { - 3 d% |6 P- I- Y& p
- </web-app>
复制代码
1 C, ? _0 J. H5 F2 ^/ U1 bmvc-context.xml:2 x3 z: ?1 L; ^5 `
- <?xml version="1.0" encoding="UTF-8"?>
0 F+ g6 P/ C# G - <beans xmlns="http://www.springframework.org/schema/beans"; I( B' K3 z1 P* [
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"$ T8 Z: A* z0 M$ O3 z7 B
- xmlns:context="http://www.springframework.org/schema/context"+ G; }/ K! c7 i8 Q! B7 Y' [6 @
- xsi:schemaLocation="http://www.springframework.org/schema/beans
6 A( J$ Z8 Y% t4 h - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
/ p: ~2 n' F! | - http://www.springframework.org/schema/context
/ ]$ k9 a; ?1 k9 e - http://www.springframework.org/schema/context/spring-context-3.0.xsd">) x+ l$ s$ t; X* O0 K4 @# A$ x# a
2 Q( v- g5 ?0 V' n- <context:component-scan base-package="com.wg.*" />) R, x0 B* Y0 w0 K( J* C% Z
" z8 M% S; M, p- <bean id="viewResolver" o; l! L1 d0 ?: y) |% k8 m
- class="org.springframework.web.servlet.view.UrlBasedViewResolver">
/ y; z9 {- l. l% ? x - <property name="viewClass". i I' @2 _! j: o" z3 M C* b
- value="org.springframework.web.servlet.view.JstlView" />
' m, W" K* m$ V9 Z; q) _( i - <property name="prefix" value="/page/" />! ^, j' Y9 w: @7 z" Z, r
- <property name="suffix" value=".jsp" />4 F) W G, J6 M% `
- </bean>; A+ V2 J( R8 r( l
- </beans>
0 s7 O- k) ?0 S0 H
复制代码 0 r5 a+ w% u! \; |$ N) J2 d. }
mybatis-config.xml:+ e: R6 V& D! \0 r5 K' W! p8 X$ a# \
- <?xml version="1.0" encoding="UTF-8"?>6 D6 B9 c" J# e9 E- j, b8 q( k6 i! s
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ) O& P+ i) B. _0 G. s, W
- "http://mybatis.org/dtd/mybatis-3-config.dtd">/ N1 u# v& f, Q$ {
- <configuration>
) _' Z* t( _ \5 ~7 ?' T, D - <typeAliases># n* E; ^( c w6 v6 E2 ]- B( i
- <package name="com.wg.bean" />
# T2 U3 u0 B- w& }/ a, Z* V; l2 B - </typeAliases>, |5 Q! g8 w5 I" q z& C$ Q
- <mappers>
* J' J( S+ h3 c1 {7 v _- | - <mapper resource="com/wg/bean/UserMapper.xml" />+ ?7 V2 u6 h: p/ O0 e+ v. L* M
- </mappers>, o6 Z: v6 ~9 B2 w
- </configuration>
复制代码 root-context.xml:) l" L7 m# z. N" p. u
- <?xml version="1.0" encoding="UTF-8"?>5 x+ `! v7 d+ Q2 Y* M
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
3 ]; D8 r" y; S/ ~' V - "http://mybatis.org/dtd/mybatis-3-config.dtd">
: y' u @6 {3 k5 {+ D" W' Z - <configuration>
# W6 {& X3 |- w - <typeAliases>9 Z6 h/ Y# Z" f6 C0 d
- <package name="com.wg.bean" />
0 J' C9 P& V8 i6 o4 u - </typeAliases>7 G5 R2 ~ i- F: t8 s1 R5 F! }; P
- <mappers>
# @" [) [8 Q: h; P - <mapper resource="com/wg/bean/UserMapper.xml" />* g0 g% ^4 a9 }
- </mappers>
, B; ~9 k' G8 L; C3 L - </configuration>
复制代码
8 ~, y: Q" l, G' tuser-context.xml:- <?xml version="1.0" encoding="UTF-8"?>6 _& ^( N1 h. ?7 l
- <beans xmlns="http://www.springframework.org/schema/beans"; d3 K" W* S( Y( _4 S/ c1 D
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"9 r( U+ X& r$ b9 I, c
- xmlns:context="http://www.springframework.org/schema/context"
{3 R0 u9 g5 y9 k7 C, c - xsi:schemaLocation="http://www.springframework.org/schema/beans5 L' z- q8 w$ f* o
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
) _) d, F1 C& x3 t4 e2 B: ]- M/ U( Y& Y - http://www.springframework.org/schema/context
$ i4 v7 R) D9 b( ] - http://www.springframework.org/schema/context/spring-context-3.2.xsd" >
) B$ y: P9 X% j5 g - , b r9 I7 x& \. j- S4 I# w) N: }% e
- ! P3 l) `8 L. c
- <!-- 用户Dao -->/ M9 I4 ]0 v: d9 J
- <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
5 N- v. ]" R v$ o5 w8 e4 n* z, t2 e - <property name="mapperInterface" value="com.wg.dao.UserDao" /> : o8 G0 H# N9 a: y, n( T0 C% B
- <property name="sqlSessionFactory" ref="sqlSessionFactory" /> D4 A) D- k5 U" M! M2 d. ^( W
- </bean>9 ~& `, Y: I' D& P# F- ~( s5 F
-
; b) L3 ] b2 o - ; g2 }% Z5 v \: J0 M* D
- </beans>
复制代码 ( n( t% v+ g" ]4 X9 y
2 [7 P: ~8 x# n
- G3 P0 i; z( T: h4 p$ G链接:springMvc整合mybatis项目源码, Y; ~$ T# J, t: Z {; @
密码:
0 X: F9 T- P6 z8 D4 L1 x( o0 z5 G+ `0 C% K/ U! |8 \) l4 _
. m$ `1 G/ J) T5 C- h; ?/ _ W- p
' H2 Y+ ^2 O& L8 c2 A) h
|
|