TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:
, w* Y) v" `1 L {" R: P: d为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:
J: k2 U! q- {3 z& s% v1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。+ [) }# Y/ U0 R# l2 H) d
2、性能优秀,这是一个最能吸引眼球的话题。7 \' Q4 U! c* X; w# {$ F- d
3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。" Q" v7 U* x5 {7 O/ m
+ f. J4 M" A# [* c4 d9 Z. H
如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。
4 {$ ^7 B6 B& r' x/ ?1 k( Z9 }( \! y( _5 u% {4 `
Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。1 r" N. z8 }/ D/ ]( d: U+ |% ^6 J
% l$ w: @2 S) a' a9 MStruts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。
8 R+ \# J/ B5 J n4 ~+ O2 k
- r, p- M( U0 }- ~* ?Spring3 MVC的优点:* t* E) i( C, [# I" {9 ^1 s% \
1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。
' O; j+ P6 B: X2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)$ W+ I& p8 t L% B7 W& n$ W
3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。) X' `/ `9 }, T& ?
+ Q1 N! K, o0 ^$ H- X5 f
Struts2的众多优点:
% P3 `% h W8 ?1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。2 J0 r4 ?, A8 q; b& g/ J$ b& g8 f5 G
2、其它方面略... 1 k1 d0 T Q; S
==============================================================# Y/ M( f. t* h
什么是mybatis
2 F0 j1 g' y) O4 ^! g. l" FMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录." O: b0 H$ K5 o- @6 k4 T W6 E
- M4 ?* d6 m% V+ u$ _6 t% U
orm工具的基本思想- U5 B# _; ]* y/ S5 f5 T9 p
无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:
8 f$ f" S2 [8 J- l1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.
1 [" u; z* h4 n: B# f2. 由sessionfactory 产生 session
5 K( @4 C% v4 m3. 在session 中完成对数据的增删改查和事务提交等." g; j$ c2 x; h m2 e) s+ K
4. 在用完之后关闭session 。
" o1 p6 t7 O# i f2 R0 F' z" {5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。
& b) [# O0 g0 e. S1 _0 r4 w( u" }- i/ v7 w7 X4 E. l
项目说明:实现了用户登陆demo。% p9 W: R/ Z% O# [& V& h0 k P
项目配置说明:3 Z# C* r/ W) j7 y( E
web.xml:
+ d1 Y" S( }9 S6 h8 R& ~- <?xml version="1.0" encoding="UTF-8"?>
, L# `. t# m3 ?5 t. O - <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 0 y: C5 Y; x/ V7 p# ]5 R: G: ]
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" $ ~* V4 @! g; z0 S! s! C
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee , G/ H7 o+ T) y* w; S# r& l8 U
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> + z3 Z, f1 q2 i [/ c3 @
-
" r, l) S# c0 _. H - <!-- 监听spring上下文容器 -->
; {+ O U3 A+ a: A - <listener> , }9 \$ f) _0 D, ^. l \# b
- <listener-class> 3 B+ ~6 Y7 t1 x# K
- org.springframework.web.context.ContextLoaderListener ' S. m4 U) b; }( ?& J+ D c
- </listener-class> ; d% k4 h$ A4 X$ z+ l+ ?
- </listener>
" ?: Q" X/ R8 X7 d0 B3 ^ - " N& v- k2 g: r
- <!-- 加载spring的xml配置文件到 spring的上下文容器中 --> + a, x" I- m* K- E: y- k
- <context-param>
7 W) {/ N- \( s: m - <param-name>contextConfigLocation</param-name> 7 R$ J5 M2 U5 A- e$ [" G/ |0 o3 h
- <param-value>classpath:*-context.xml</param-value> + m: w8 ^3 I2 @4 ? t& r
- </context-param> ! s1 V+ L) i3 S; P3 n
- 7 T) k- l. f* o: G
- <!-- 配置Spring MVC DispatcherServlet -->
/ u2 A1 l4 M7 w7 E* n; t+ [ - <servlet> 5 s' i- h$ q3 l5 |! h$ c6 d2 J- ~
- <servlet-name>MVC</servlet-name> 0 p1 q5 [8 Q7 w- s( l& ]8 O& c' o
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 9 R. l: ~( c/ I& r
- <!-- 初始化参数 -->
) c# R+ h; d) j7 R' j& {# u/ U - <init-param>
& W$ U. E, Q! r+ G9 c) e - <!-- 加载SpringMVC的xml到 spring的上下文容器中 --> . O/ w8 T5 y2 n3 B( K# S$ ]5 ]
- <param-name>contextConfigLocation</param-name> 0 v1 P, ]5 `/ \; \; v' ?
- <param-value>
% A3 }0 |! K' `. f4 X - /WEB-INF/classes/mvc-context.xml
% q# P" R0 w N0 g8 R7 x7 p - </param-value>
( S5 \2 V' {. v8 @9 y2 |9 N - </init-param>
$ {, H0 k5 \% p - <load-on-startup>1</load-on-startup> " ]8 |' V: Z: Z7 H4 b6 E# j
- </servlet> 5 r% l% o( C; X3 }$ v: Y
-
3 G+ Y4 P, B0 R( @! D0 _2 x# ^' G - <!-- 配置DispatcherServlet所需要拦截的 url -->
, ^7 H: K2 C# O) ]9 X - <servlet-mapping>
2 v. v1 ?7 d, x7 h% K: l$ B - <servlet-name>MVC</servlet-name> , W# X' S; b" G1 r+ Q; Q
- <url-pattern>*.do</url-pattern> : Q0 N% m2 T9 A* J
- </servlet-mapping>
2 w) Y; {2 `# `1 l% T# I -
- q" k+ F& z4 Y, m - <welcome-file-list> " Q* l( i2 W) H! Q) h$ \
- <welcome-file>index.jsp</welcome-file> ! y2 G5 J. T* J* s8 _3 W
- </welcome-file-list> 5 ~# N, ~. O8 C% L) _1 l
-
5 i% `5 x+ m2 e; a+ G" g - q: L- Z }6 h7 J2 j
- </web-app>
复制代码 % z" b- \8 s5 j( p6 ^4 i& q
mvc-context.xml:+ H+ m0 q8 I2 l
- <?xml version="1.0" encoding="UTF-8"?>
. i1 e2 W( D+ e3 _6 a2 \4 ?0 L0 W6 y8 S - <beans xmlns="http://www.springframework.org/schema/beans"
, w, c# Y$ o/ h - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"+ x0 W. b* k4 J# ]/ r
- xmlns:context="http://www.springframework.org/schema/context"
' \( H% K/ w1 V i) x - xsi:schemaLocation="http://www.springframework.org/schema/beans
v! y9 w7 w" O$ Y9 h4 V, L0 g - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
5 G# i+ z7 e3 N9 k8 E0 P( q - http://www.springframework.org/schema/context
( w7 ~$ w O0 M6 i - http://www.springframework.org/schema/context/spring-context-3.0.xsd">
) l; z* Z5 J* y; @% q2 `6 J" { - ) n; t+ b ?7 O1 r9 U+ h
- <context:component-scan base-package="com.wg.*" />3 o+ |6 g0 g/ ]7 \
- 2 R( Q$ J, O w% ]" t
- <bean id="viewResolver"
7 m9 M6 j/ d) m+ t: O& d - class="org.springframework.web.servlet.view.UrlBasedViewResolver">
0 Q! { O- R$ r/ m1 b - <property name="viewClass"# a- h: R/ \( s" S1 u
- value="org.springframework.web.servlet.view.JstlView" />
- |9 C- K) f3 Y: K) j3 }% d - <property name="prefix" value="/page/" />
, Q2 V: a2 N/ y7 {1 B4 m - <property name="suffix" value=".jsp" />
9 x7 y1 b& M' z2 R - </bean>5 K# k, h1 z* F( Z% p3 Z" ]* y
- </beans> K5 g- K/ w# Y b- G& ^, m, ?
复制代码 & V, u1 U$ @# K
mybatis-config.xml:# G0 G7 q2 \! [9 S% i
- <?xml version="1.0" encoding="UTF-8"?>
5 Q7 K/ p' m$ m7 p( s - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
3 V8 J+ D, k! {, `9 M - "http://mybatis.org/dtd/mybatis-3-config.dtd">
2 U t& m: {1 f2 L7 d - <configuration>
% m. \: U) W1 X' R* W1 Y$ c! ~ - <typeAliases>
0 F6 f( a5 _! O$ h/ c' q- l - <package name="com.wg.bean" />
9 H% A" z7 e7 r6 Y% l - </typeAliases>+ a( \: u$ r: P
- <mappers>
: Y! B4 e0 e6 Y7 w! y - <mapper resource="com/wg/bean/UserMapper.xml" />
' `/ b. l) ~6 @5 H9 E' K - </mappers>
, N. @$ \4 T) f+ M: B X - </configuration>
复制代码 root-context.xml:7 O7 e: n, p3 e# P% G9 ?6 d5 N
- <?xml version="1.0" encoding="UTF-8"?>
$ b- y7 t0 g+ B - <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ' ]1 h- y3 U5 r8 @6 s. ?
- "http://mybatis.org/dtd/mybatis-3-config.dtd">0 Y$ t& f/ b4 z& U
- <configuration>5 Z! p: w9 z( C9 z6 o8 g( W7 t
- <typeAliases>
- g8 |! r2 j& `. g - <package name="com.wg.bean" />
1 x- f* t$ r0 i1 E - </typeAliases>3 n9 Y9 Z$ s- n5 Y" Z2 j a8 Y/ O( H
- <mappers>3 Z; [0 W' f0 r# C7 f
- <mapper resource="com/wg/bean/UserMapper.xml" />8 r2 s% j! d3 I8 n; Z6 y
- </mappers>/ E' h( I$ e+ s( Q7 k
- </configuration>
复制代码 6 x: Z2 ~( B" e) X! Q8 x5 z7 A
user-context.xml:- <?xml version="1.0" encoding="UTF-8"?>
( C O* b+ K5 t3 z0 c1 U - <beans xmlns="http://www.springframework.org/schema/beans", b8 H8 F, j5 I' s" H/ T
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"2 [2 p( K, e4 k& w/ p' v+ |9 y5 z0 X
- xmlns:context="http://www.springframework.org/schema/context"
9 L! E4 S5 X/ b# L& l - xsi:schemaLocation="http://www.springframework.org/schema/beans
3 d" `* _& [$ g+ t - http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
7 M% m) _1 U! e5 W, \) p - http://www.springframework.org/schema/context
# v# N ]' G# x' H5 a5 Y - http://www.springframework.org/schema/context/spring-context-3.2.xsd" >' F/ U' q1 u8 [6 J" i. ^
-
. n/ r4 W! \' `+ w, p2 e& Z - $ _2 r7 r( ]/ {6 l2 i2 A6 a ]
- <!-- 用户Dao -->
0 c& l( ~; Q, k* l - <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> * g: ]2 \% k5 p5 Z9 r) M9 O
- <property name="mapperInterface" value="com.wg.dao.UserDao" /> ) _5 ^3 C% {1 q+ [3 r0 x+ c: L8 c# ?
- <property name="sqlSessionFactory" ref="sqlSessionFactory" />
6 N6 A5 P7 R/ s6 J: T! v1 H - </bean>
( f; H# n8 R d. E$ H( P -
7 b+ c' _; j) B( m: N$ b; j, `
3 t" \8 O* G" K( C# u, K5 e2 {- </beans>
复制代码
O4 g) V" }5 g! r* a. p2 N- V) ^! D& e9 I% d: k1 I" J8 [
+ |$ p! I& k! _+ ~1 R8 z链接:springMvc整合mybatis项目源码$ H: `. h& P7 @6 @# Z T1 i7 A
密码:
% C5 l! a" `) U9 W3 J
1 t5 r, t4 a5 w7 Y8 g( P/ { {4 L' T3 y: E9 a3 [ V. F- Y
& Y& l p6 E8 J2 m |
|