TA的每日心情![](source/plugin/dsu_paulsign/img/emot/shuai.gif) | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
一、前言:
# L$ t9 ]* q/ b! L) @$ k$ ]* I为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平。你的一个决定会影响团队未来的几年。要考虑方面太多:* h, x3 h' ]* j: Z M Q0 U9 U8 M( n
1、简单易用,以提高开发效率。使小部分的精力在框架上,大部分的精力放在业务上。) g2 N' U% i- M" J. V0 w4 M: _; Y
2、性能优秀,这是一个最能吸引眼球的话题。" o8 H0 I* x3 c( _
3、尽量使用大众的框架(避免使用小众的、私有的框架),新招聘来的开发人员有一些这方面技术积累,减低人员流动再适应的影响。
3 [2 A9 Y% W, H1 h
4 f& A3 a) A, x7 Y7 T. H" n如果你还在为这件事件发愁,本文最适合你了。选择spring MVC吧。5 B& r& I6 _6 r1 J* a5 X% d8 y
# n! B/ a- _5 h+ Q' i7 Q; J
Spring MVC是当前最优秀的MVC框架,自从Spring 2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。Spring 3.0更加完善,实现了对struts 2的超越。现在越来越多的开发团队选择了Spring MVC。
$ [: \ G4 ^4 g6 |4 O# D
+ ?; h0 {2 g; S" Q& ]Struts2也是非常优秀的MVC构架,优点非常多比如良好的结构,拦截器的思想,丰富的功能。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。而Struts2的多层拦截器、多实例action性能都很好。
$ ?$ o9 v3 Q6 i' d0 U2 b$ W
3 Q% g- ~/ q- U) E' ~Spring3 MVC的优点:
! \6 a9 F! O! k) l1、Spring3 MVC使用简单,学习成本低。学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。
; c ?/ n( u3 g- j2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)( A9 i. l2 y1 Z- i* e3 B1 B
3、Spring3 MVC的灵活是你无法想像的,Spring框架的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。
7 M: y! e% G3 l) f5 N$ Q$ t, I" U
+ }# |7 M! B# pStruts2的众多优点:
, T: s5 i3 o& T1、老牌的知名框架,从Struts1起积累了大量用户群体。技术文档丰富。5 c2 ], w2 C! [! }
2、其它方面略...
- k6 Z3 n" K3 C8 P* ?==============================================================
. A6 E1 K9 w' p: L# k- d什么是mybatis5 K. ~! B6 g: c
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.+ g$ V& T8 M% F
- R- m5 p2 [& R \% S) C1 I
orm工具的基本思想: B' A+ n# |0 E0 @
无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:* ]" c: W, M3 N) c' T" B' O- \% d
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.
% |% R# z/ W+ L& [8 i2. 由sessionfactory 产生 session2 \5 \! X: v9 i# h$ v
3. 在session 中完成对数据的增删改查和事务提交等.4 I U; ~4 ?$ J; j% n8 C
4. 在用完之后关闭session 。5 R" b# B0 p/ ]* I- J9 J
5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。* C8 Y5 }) a! B
9 k; q5 d, p/ m+ \项目说明:实现了用户登陆demo。& ?: x, t* u1 S7 ~ z+ e
项目配置说明: O! o4 P) y$ d. s3 k
web.xml:3 G% m9 ~7 u3 P" I. j
- <?xml version="1.0" encoding="UTF-8"?> ; l' P5 L8 s& |6 {0 @& d" e' ~
- <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" . S5 i" V d& c e
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ; E# N5 b) l6 Q, [3 G' ~
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 0 B' b& H, w$ E! o8 ^
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 2 V5 J5 @8 s# K$ T$ l
-
3 ?7 b# o2 T, ^( V5 s8 l$ L% e - <!-- 监听spring上下文容器 --> 2 O3 [5 ~, X5 N: t2 V7 l* ~$ n
- <listener>
# n8 J+ [- H+ ]" B ^# k0 T - <listener-class>
2 [. h# h$ |$ W% b6 R& j! o3 N8 R - org.springframework.web.context.ContextLoaderListener
5 Y7 C& ]/ o. E- ]. m1 D2 \5 E1 [ - </listener-class>
' q! y2 L. L3 H% x+ m% l3 G - </listener>
6 S+ U3 `9 e! E7 [" b -
0 c3 T. c- g1 b. ?8 o - <!-- 加载spring的xml配置文件到 spring的上下文容器中 --> 9 b3 ?. z( j! w$ n
- <context-param>
7 Z" I, r: O5 }9 o6 X A; K9 o - <param-name>contextConfigLocation</param-name>
* O" J% u3 O# U3 _ - <param-value>classpath:*-context.xml</param-value> 2 c+ L' N8 ~& L5 C9 c$ V
- </context-param>
# s. Z4 ~" S& D9 ^5 s - 2 Z' W: Y6 Y7 ?1 U+ w e
- <!-- 配置Spring MVC DispatcherServlet --> 7 A% Y( q% Q2 r
- <servlet>
$ D" m, ]) _% c% O - <servlet-name>MVC</servlet-name>
+ k1 C7 N% m" ^6 t - <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
2 v) z @1 a5 \' F4 X. Y - <!-- 初始化参数 --> ! C8 f. q7 F9 f7 G
- <init-param> c/ s6 R; b" y; a* g0 M
- <!-- 加载SpringMVC的xml到 spring的上下文容器中 -->
3 U1 Y3 W! N: h: m+ L z4 v - <param-name>contextConfigLocation</param-name> . N% y# {4 O0 t/ }; j! Q
- <param-value>
1 v) J# I! x2 }* @ - /WEB-INF/classes/mvc-context.xml
* e4 O1 [ N' X3 k0 X' }" W - </param-value>
3 e1 r5 f, o: i - </init-param> % h" j# T& I& d
- <load-on-startup>1</load-on-startup>
3 f& K/ M4 x) _% x+ o7 O - </servlet>
( U5 |7 b! C* f9 E4 a* i8 o -
6 G% J+ y! h+ ` - <!-- 配置DispatcherServlet所需要拦截的 url --> d2 m! d, u" ~. t
- <servlet-mapping>
$ l9 O4 r) u D* F. J, m+ N' q/ X5 P - <servlet-name>MVC</servlet-name> # ?7 F. j1 p9 a; f
- <url-pattern>*.do</url-pattern>
5 J1 a/ `* d1 o1 c: g# F - </servlet-mapping>
" k, N9 G# \) p. f - " ^7 e3 Q: n8 b5 [3 q
- <welcome-file-list> : ^# } H2 n$ G$ _$ H# @( k
- <welcome-file>index.jsp</welcome-file>
5 T' t0 ~- T P/ S9 n) y - </welcome-file-list>
# J8 ~4 j0 N& Q0 z. E -
1 k& j) e2 f' ^4 }4 K) k7 ] -
. G6 ?+ A% H/ b+ b8 x, F* z% |* O - </web-app>
复制代码
" W. E Q- w; P% Q; h1 s3 U6 K+ }mvc-context.xml:
& n1 U% G @. @4 x; x. l7 |- <?xml version="1.0" encoding="UTF-8"?>; q# Y) m7 t0 u# f
- <beans xmlns="http://www.springframework.org/schema/beans"
! a. K, W& I& m: Y" i1 n - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
+ N) ]8 s2 T, F- T# m$ `2 j - xmlns:context="http://www.springframework.org/schema/context"' s7 v; P# E" T. L
- xsi:schemaLocation="http://www.springframework.org/schema/beans u5 p6 \6 K2 |. G, Q. s- a/ X
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd5 v9 E( U3 T/ ~5 I5 L
- http://www.springframework.org/schema/context* k2 a. M) w5 i+ a5 c1 | E7 u# V
- http://www.springframework.org/schema/context/spring-context-3.0.xsd">
' N! r/ N- W1 S! C" ^' G
" d7 l. U, R" x- <context:component-scan base-package="com.wg.*" />
8 e) |4 F N7 E - " \: W) X# X0 V* C4 p$ u+ g
- <bean id="viewResolver"' W/ E1 {0 \- u% `& g
- class="org.springframework.web.servlet.view.UrlBasedViewResolver">2 V- \4 s# j0 l9 R: v6 {2 C
- <property name="viewClass"
G0 R" \1 i: ^: r/ \ - value="org.springframework.web.servlet.view.JstlView" />, _5 M$ c) N/ M; s: K3 ~/ a
- <property name="prefix" value="/page/" />& i: F8 }. O0 _2 P
- <property name="suffix" value=".jsp" />
# Q% _( t X# j+ r0 g0 C - </bean>
* R$ C' I5 z& @3 C5 i% ^ - </beans>2 D' e: ?+ u/ N/ ]( _
复制代码
% F, B' x- i y9 w$ _1 U. U9 Wmybatis-config.xml:" d3 P5 T7 y& z0 ~9 l/ H
- <?xml version="1.0" encoding="UTF-8"?>8 J0 w: k$ g! Y, ^
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
7 T+ ^) a' v) i+ q - "http://mybatis.org/dtd/mybatis-3-config.dtd">
8 k% C( L" e3 Q% `; V, I( W - <configuration># W3 z9 |8 L1 Y! g
- <typeAliases>) \8 X0 ^7 d7 ]: v1 M! S$ ~
- <package name="com.wg.bean" />: o7 ]6 _8 F/ Z+ |0 U+ F/ x* Q
- </typeAliases>
# e: o/ K. e8 l9 P4 R. ^2 |/ K - <mappers>$ k v; E2 ` h4 h1 ]8 T" `8 V) {
- <mapper resource="com/wg/bean/UserMapper.xml" />3 c" \4 Y% _( C+ `& d
- </mappers>
- Q7 D$ C% k$ Y" s - </configuration>
复制代码 root-context.xml:
' K1 s" f1 j4 s8 T7 l3 t- <?xml version="1.0" encoding="UTF-8"?> u7 ?. d) ?0 z) @* M
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" + G0 H: p: ]- L, W/ E1 t% ]
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
+ {; }' Y! `7 ^" Q: A2 u - <configuration>
. {) E6 Z$ T# d2 J - <typeAliases>
/ p, E$ H. d+ D/ \9 V - <package name="com.wg.bean" />
) {/ s6 w R$ _ - </typeAliases>
) D6 D( O8 ^# K: U - <mappers> B* r* V, z7 i4 p
- <mapper resource="com/wg/bean/UserMapper.xml" />+ s+ C$ M4 ~4 j# B
- </mappers>
! G" z9 A7 j5 A9 e# r3 |0 W$ Q - </configuration>
复制代码 * ?; Q& E9 S! U4 w4 ?3 L
user-context.xml:- <?xml version="1.0" encoding="UTF-8"?>. L, h2 y, H$ O: _( S3 O
- <beans xmlns="http://www.springframework.org/schema/beans"
; F* T- ]" k/ C - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"& M$ u R0 h: k/ S5 \
- xmlns:context="http://www.springframework.org/schema/context"6 k+ W: T4 w$ m
- xsi:schemaLocation="http://www.springframework.org/schema/beans; M( g$ p6 p* n% T$ y+ u
- http://www.springframework.org/schema/beans/spring-beans-3.2.xsd1 i4 x5 g8 n7 x! d' z& M2 U9 [
- http://www.springframework.org/schema/context
0 V1 K/ u; }6 M; e/ y+ _1 [ - http://www.springframework.org/schema/context/spring-context-3.2.xsd" >
0 R s2 c- t& m C - ) R; }3 a# ]6 L2 a# Y
- & d# O8 L( Z& p" [* `% _. k
- <!-- 用户Dao -->3 l1 w6 X* g3 R1 D
- <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean"> 5 s* y0 i- l3 E l( F( ? Q) m
- <property name="mapperInterface" value="com.wg.dao.UserDao" />
; E; o7 _: ~/ }& j! B/ v - <property name="sqlSessionFactory" ref="sqlSessionFactory" /> # M$ @0 j" r3 b
- </bean>" m/ s& g; Q6 u( `$ t2 o% e
-
4 i( v' l1 K* Y! f - 8 D( d. c) Z( J4 Z, p0 \4 Q% P
- </beans>
复制代码
2 X- L# o$ d& m6 Y" X# j6 W% V; q0 ]9 B) n
7 R& m# R8 R4 S, r链接:springMvc整合mybatis项目源码
4 s& E, h/ h8 \6 n4 t 密码:& q9 b K1 W+ V9 P
7 [! g( V' [8 O3 I
6 R7 S( i' Q; w
/ \. J2 q0 w9 h. v+ e. U |
|