TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:
( C' @8 [) @! X为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:
i3 H" y- E2 v7 Q, Q1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。' _. ^7 W5 {, N: |% M; q/ ]- s
2、性能优秀,这是一个最能吸引眼球的话题。
* d7 G# S* Q# E3 d3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。
1 c- l+ ?( Y# D+ D8 w, c |# D) `: A0 N# t$ `# ~0 P
如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。6 Y$ | y. ?( k
6 g/ F, z% \7 f9 s1 @& d! mSpring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。- [& j1 x: Z" V1 s* P$ o( U8 {
6 ~% G( [5 q6 y8 q! Z- Z0 Q/ O* fStruts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。
4 f8 r9 D" m. H5 ]9 N
( w- N9 L- p- c/ ?Spring3 MVC的优点:
9 ^" F% _4 ]! F" L6 c' a+ L; Q1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。
" r+ q' s* u4 n+ r0 G' t* H2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)
, a7 E5 o" Z( K% H4 L/ L6 ` y& R3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。
3 J; B R' U# V7 K& F
% h9 E& K4 v; KStruts2的众多优点:
$ t6 @+ [% S0 S1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。
' t- D. B4 I' I2、其它方面略... $ B1 B6 U3 v# D- X
==============================================================5 j5 [) z5 Y! l9 u! f- g$ X
什么是mybatis
0 K. F& r% b6 X7 sMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.9 ^3 a' X4 e4 D* Z8 g" O! V
# O# R1 X+ Z# E% jorm工具的基本思想1 L o$ m9 x9 i- B) c1 a
无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:, E4 C2 T% [. w M
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.1 a5 Q: M# P: T, g6 i
2. 由sessionfactory 产生 session
, i) w3 ~5 g' b+ ]' d! @3. 在session 中完成对数据的增删改查和事务提交等.) z' R8 p0 Z( ~2 |, p+ J
4. 在用完之后关闭session 。/ o; [! e. R! L3 |" {1 Z( P
5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。3 m+ K; t; |2 W; H: S
' G8 s0 w/ _' F. w% q- |0 J
项目说明:实现了用户登陆demo。0 C7 D0 [' _6 I5 H
项目配置说明:
5 g$ M! L- E) e" ]web.xml:
. d* _; i6 g9 Q, P- <?xml version="1.0" encoding="UTF-8"?>
# x8 [: h5 ~/ Z1 U1 V - <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
7 T# h! t! y7 q. F3 D" b - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" M- [0 Z1 H( U
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- H& ~7 Q! a6 L) M% U9 T - http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 6 G1 n1 A& q: C) h: O( V
-
+ F2 |8 l) H) K - <!-- 监听spring上下文容器 -->
; K4 u+ S* U. v1 v5 B: z# g - <listener> . o4 s4 w; G1 \3 f
- <listener-class>
- E6 R2 A2 t p( ~. @& D [ - org.springframework.web.context.ContextLoaderListener
1 d* S- w; @1 t( V - </listener-class>
; n7 b: v, J: F. B& E' n, s - </listener>
! e7 S1 @1 U. e: d0 R, [ -
7 `+ |7 z& Z+ C7 S8 z - <!-- 加载spring的xml配置文件到 spring的上下文容器中 -->
* J1 g9 O# b" G- o4 r% J9 j9 f - <context-param>
n" @/ Q" H. B; v3 y0 L - <param-name>contextConfigLocation</param-name> l7 l( o {! f6 i* V2 a$ ~0 O
- <param-value>classpath:*-context.xml</param-value>
" _2 S: C2 v( A8 R - </context-param>
& P) g+ Y1 X* X; \/ r q - * b# ?3 [& A6 D* m0 R% P
- <!-- 配置Spring MVC DispatcherServlet --> D0 ?- s) X" ]+ J: K
- <servlet> f, } G5 o" S2 W) S+ y
- <servlet-name>MVC</servlet-name>
3 c5 P% h: m# y# i3 y3 w5 F) k - <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 7 W, y6 }. T2 C5 y! y, G
- <!-- 初始化参数 -->
& C. j$ |) i/ f - <init-param> 0 @/ p- @$ o) D. y6 h
- <!-- 加载SpringMVC的xml到 spring的上下文容器中 --> 9 }# @9 M$ f) v+ O# d$ \
- <param-name>contextConfigLocation</param-name>
, d: C; o. X- A% N - <param-value> ' F1 V4 j- t1 |. I: {7 M
- /WEB-INF/classes/mvc-context.xml # A. L( L7 j8 R9 M4 G
- </param-value> 6 ?* f6 W7 |( A. O8 C
- </init-param> 6 j# D$ }9 x" B) O* E
- <load-on-startup>1</load-on-startup> * Y \8 B; G/ T& ^8 k D
- </servlet>
& N6 G2 b7 n( ]- Z1 V. d - 7 \5 q8 J% K4 y( {) ]* E
- <!-- 配置DispatcherServlet所需要拦截的 url --> * y) F( T! i# g" b
- <servlet-mapping>
" U3 T+ z% j2 G! c2 R - <servlet-name>MVC</servlet-name> " Z5 L9 S, `( L( U+ c
- <url-pattern>*.do</url-pattern> 2 z9 y8 |* `. S7 n; T3 f
- </servlet-mapping> 7 T! i7 v9 k$ O% j5 d
-
$ X W& x/ Q6 r: O9 a5 C- u - <welcome-file-list> : ^. \, z9 z. Q; |
- <welcome-file>index.jsp</welcome-file> , A3 }' @8 [8 z
- </welcome-file-list>
! O. L% I1 A8 c+ b - & e. Y* \+ B1 Y6 @. I8 E
-
2 a6 s! i/ m8 x1 n) B, o$ ^ - </web-app>
复制代码 - ~, w7 J% c* t# ] P! l a# U
mvc-context.xml:
) _9 V9 @% Q) }2 N- <?xml version="1.0" encoding="UTF-8"?>
0 }6 U, ?: U3 p - <beans xmlns="http://www.springframework.org/schema/beans"% J3 c' A6 N- n2 q
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
3 Z( c8 T2 F) W9 L, y+ g) g {# ~ - xmlns:context="http://www.springframework.org/schema/context"
4 u; z: x4 x. x# g2 _. j - xsi:schemaLocation="http://www.springframework.org/schema/beans o$ f; M7 e8 O* w1 Y, b4 ^
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
M5 m" p; S7 n. p% {6 s1 T+ x( L - http://www.springframework.org/schema/context
/ Z; E5 r- N$ H$ _5 z2 B; q! y i - http://www.springframework.org/schema/context/spring-context-3.0.xsd">9 g# h' A7 T. p7 j4 X
+ Q% i( a9 i$ y0 ~3 q- M' d- <context:component-scan base-package="com.wg.*" />4 H6 L J# U+ y: q3 f. `
! \9 n7 L) }# u" H3 ~8 D- <bean id="viewResolver"1 @! ^: ?* m2 X; ~4 c
- class="org.springframework.web.servlet.view.UrlBasedViewResolver"># o& R7 x. g7 |% }
- <property name="viewClass"9 _7 u. P) _, Z8 l, p$ F, v
- value="org.springframework.web.servlet.view.JstlView" />+ ]$ y' B5 F) z: J
- <property name="prefix" value="/page/" />
A1 L$ ~; {* ~: U - <property name="suffix" value=".jsp" />
7 J f. u9 y, I! X |2 x0 j, u - </bean>
+ F% U3 I( S. z7 B - </beans>
1 } p0 ]% P9 y5 s( [3 ^# I- C
复制代码 $ W& @1 t; i" k+ F. U
mybatis-config.xml:9 j4 E( ?$ |# C1 v+ Y+ `
- <?xml version="1.0" encoding="UTF-8"?>
1 @' B, u' t* K) }! {4 m - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" . F3 ~2 y6 a3 g: T7 p$ ?
- "http://mybatis.org/dtd/mybatis-3-config.dtd">2 b$ c6 A+ K+ \( D1 W
- <configuration>
& V0 G& B: }% r4 Z A$ R% Z" F - <typeAliases>7 X! r; u# h% m# v8 T9 O
- <package name="com.wg.bean" />
, Z7 g& @- j+ i$ z/ k5 J/ R - </typeAliases>! G1 J! \' Y$ ]
- <mappers>
1 A* a& W1 r$ Z4 P! m- Y- U - <mapper resource="com/wg/bean/UserMapper.xml" />2 \# h- S4 g! z+ P) L9 p
- </mappers>
7 j' B/ R6 y4 {6 Z, x8 ?( }) T h1 { - </configuration>
复制代码 root-context.xml:" q; P; c# M6 I0 \' H1 S
- <?xml version="1.0" encoding="UTF-8"?># i' i2 z+ J7 y$ N( M: u, D
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 9 ]/ o) p3 r3 p& ^
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
! r" M; c5 N6 M9 r+ g" O - <configuration>
g' \2 A; r0 R1 s( Q3 N6 } - <typeAliases>9 c C- D' q: I" L, \- D. C) S1 ^
- <package name="com.wg.bean" />) G+ q' G, D, a5 X" O* H
- </typeAliases>' P; F9 {* x: X. F& b! @: k8 N
- <mappers>& G+ U) D" D3 r- ^% S) a8 l
- <mapper resource="com/wg/bean/UserMapper.xml" />
9 T# N1 X3 T3 _4 }' c" q i# k - </mappers>
/ Y d5 F; \) y. Y* g7 p* Y - </configuration>
复制代码 / d6 U* o: R3 T$ z2 E- M
user-context.xml:- <?xml version="1.0" encoding="UTF-8"?>4 m) Z/ ~0 P( r T
- <beans xmlns="http://www.springframework.org/schema/beans"2 t$ `/ |0 D) j3 S
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
' k# ]% C1 c% P( s7 D. F: j - xmlns:context="http://www.springframework.org/schema/context"
/ J/ m- F' @ o/ \7 |8 r - xsi:schemaLocation="http://www.springframework.org/schema/beans* i1 x8 i; G* A n; L! T3 B) r
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
# _1 u& B, ]5 a. E: R - http://www.springframework.org/schema/context
, r+ a/ w5 n$ J0 I' ?) e1 V5 ]6 v - http://www.springframework.org/schema/context/spring-context-3.2.xsd" >
( G9 w9 z6 _( W8 @5 a5 `, k - . {' |4 @2 J7 d, A! v0 K. `0 d
- 6 ]9 F7 A2 T9 |" i8 T
- <!-- 用户Dao -->- @! s2 Z2 w- ^& s4 q
- <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> 4 t" n' c. ~3 w3 o, a! n$ ~
- <property name="mapperInterface" value="com.wg.dao.UserDao" />
+ N: B9 n& N: o5 C/ B, a: D3 E - <property name="sqlSessionFactory" ref="sqlSessionFactory" /> ; ?9 H' D$ w5 h6 Z
- </bean>
# E% L9 l4 v) A" p4 W9 \1 |6 H# V8 o -
% M. j7 a. o1 I/ H% f/ w I- N - 1 b5 v2 p3 {3 X; P. ]
- </beans>
复制代码
1 ~$ G$ L/ d5 G6 c. Z
% `7 j8 V3 O9 k
$ a* ~6 [3 A* `- [4 |链接:springMvc整合mybatis项目源码
& h% I$ ~% E* a' M% u 密码:
" X8 }1 f7 x+ ~: l/ P! C( J
# g7 k* h0 k- b q8 g f- m& t0 x
3 [% @& x% @3 a* U3 k
|
|