spring mvc経典入門
13458 ワード
現在主流のWeb MVCフレームはStrutsという主力のほかに、Spring MVCが続いています.そのため、プログラマとしての主流フレームワークとして、フレームワークの選択が多くなりました.変化に対応するニーズと業務に対して、実行できる方案が自然に多くなりました.ただし、Spring MVCを活用して多くのWeb開発に対応するには、その配置や原理を把握しなければならない.
一、Spring MVC環境構築:(Spring 2.56+Hibername 3..0)
1.jarパッケージ導入
Spring 2.56:spring.jar、spring-webmvc.jar、commons-loging.jar、cglib-nodep-2.1_3.jar
Hbernate 3.6.8:hibernate 3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、antlr-2.7.6.jar、comons-collection s-3.1.1、dom 4 j-1.6.jar、javassist-3.12.0.GA.jar、jta-1.11.jar、slap-ja、slap-ja.ja、slap-ja.jp-ja.jp.jp.ja.jp-ja.ja.ja.jp-ja.jp-ja.jp-ja.jp-ja
2.web.xml設定(部分)
spring-servletという名前は、上のweb.xmlのタグに付けられた値がspring(spring )であり、さらに「-servlet」を付けて作成されたspring-servlet.xmlファイル名は、sprigVCファイルに変更されます.
Spring MVCはStrutsと原理的に似ています.(いずれもMVCアーキテクチャに基づいています.)ページ要求を制御するServletがあります.処理が終わったら、ページにジャンプします.下記のコードを見てください.
これらのSpring MVCを把握することによって、すでに非常に良い基礎ができました.ほとんどの開発に対応できます.これらを熟練に把握することにより、Jsp、Velocity、Tiles、iText、POIなどの多様なビュー技術がより深く使えるようになります.Spring MVCフレームは使い方が分かりませんので、JSP技術だけを使うように強制することはありません.
回転:http://blog.csdn.net/wangpeng047/article/details/6983027
一、Spring MVC環境構築:(Spring 2.56+Hibername 3..0)
1.jarパッケージ導入
Spring 2.56:spring.jar、spring-webmvc.jar、commons-loging.jar、cglib-nodep-2.1_3.jar
Hbernate 3.6.8:hibernate 3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、antlr-2.7.6.jar、comons-collection s-3.1.1、dom 4 j-1.6.jar、javassist-3.12.0.GA.jar、jta-1.11.jar、slap-ja、slap-ja.ja、slap-ja.jp-ja.jp.jp.ja.jp-ja.ja.ja.jp-ja.jp-ja.jp-ja.jp-ja
2.web.xml設定(部分)
<!-- Spring MVC -->
02
<!-- ====================================== -->
03
<servlet>
04
<servlet-name>spring</servlet-name>
05
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
06
<!-- servlet.xml , WEB-INF , [<servlet-name>]-servlet.xml, spring-servlet.xml
07
<init-param>
08
<param-name>contextConfigLocation</param-name>
09
<param-value>/WEB-INF/spring-servlet.xml</param-value>
10
</init-param>
11
-->
12
<load-on-startup>1</load-on-startup>
13
</servlet>
14
15
<servlet-mapping>
16
<servlet-name>spring</servlet-name>
17
<url-pattern>*.do</url-pattern>
18
</servlet-mapping>
19
20
21
22
<!-- Spring -->
23
<!-- ====================================== -->
24
<listener>
25
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
26
</listener>
27
28
29
<!-- Spring Bean 。 WEB-INF -->
30
<context-param>
31
<param-name>contextConfigLocation</param-name>
32
<param-value>classpath:config/applicationContext.xml</param-value>
33
</context-param>
3.spring-servlet.xml配置spring-servletという名前は、上のweb.xmlの
<?xml version="1.0" encoding="UTF-8"?>
02
<beans xmlns="http://www.springframework.org/schema/beans"
03
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
04
xmlns:context="http://www.springframework.org/schema/context"
05
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
06
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
07
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
08
http://www.springframework.org/schema/context <a href="http://www.springframework.org/schema/context/spring-context-3.0.xsd">http://www.springframework.org/schema/context/spring-context-3.0.xsd</a>">
09
10
<!-- spring mvc -->
11
<context:annotation-config />
12
13
<!-- jar -->
14
<context:component-scan base-package="controller"></context:component-scan>
15
16
<!-- POJO -->
17
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
18
19
<!-- 。prefix: , suffix: -->
20
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/" p:suffix=".jsp" />
21
</beans>
4.appication Contect.xml配置
<?xml version="1.0" encoding="UTF-8"?>
02
<beans xmlns="http://www.springframework.org/schema/beans"
03
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
04
xmlns:aop="http://www.springframework.org/schema/aop"
05
xmlns:tx="http://www.springframework.org/schema/tx"
06
xsi:schemaLocation="
07
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
08
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
09
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
10
11
<!-- hibernate.cfg.xml -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
13
<property name="configLocation">
14
<value>classpath:config/hibernate.cfg.xml</value>
15
</property>
16
</bean>
17
18
<!-- Hibernate -->
19
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
20
<property name="sessionFactory">
21
<ref local="sessionFactory"/>
22
</property>
23
</bean>
24
25
<!-- ( )-->
26
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
27
28
<!-- Service -->
29
<bean id="loginService" class="service.LoginService"></bean>
30
31
<!-- Dao -->
32
<bean id="hibernateDao" class="dao.HibernateDao">
33
<property name="sessionFactory" ref="sessionFactory"></property>
34
</bean>
35
</beans>
二、詳しくはSpring MVCはStrutsと原理的に似ています.(いずれもMVCアーキテクチャに基づいています.)ページ要求を制御するServletがあります.処理が終わったら、ページにジャンプします.下記のコードを見てください.
package controller;
02
03
import javax.servlet.http.HttpServletRequest;
04
05
import org.springframework.stereotype.Controller;
06
import org.springframework.web.bind.annotation.RequestMapping;
07
import org.springframework.web.bind.annotation.RequestParam;
08
09
import entity.User;
10
11
@Controller // Struts Action
12
public class TestController {
13
14
@RequestMapping("test/login.do") // url , Struts action-mapping
15
public String testLogin(@RequestParam(value="username")String username, String password, HttpServletRequest request) {
16
// @RequestParam url ( required=false)
17
// @RequestParam :@RequestParam("username")
18
19
if (!"admin".equals(username) || !"admin".equals(password)) {
20
return "loginError"; // ( ), spring-servlet
21
}
22
return "loginSuccess";
23
}
24
25
@RequestMapping("/test/login2.do")
26
public ModelAndView testLogin2(String username, String password, int age){
27
// request response ,
28
// name ,
29
30
if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {
31
return new ModelAndView("loginError"); // ModelAndView ( ),
32
}
33
return new ModelAndView(new RedirectView("../index.jsp")); //
34
//
35
// return new ModelAndView("redirect:../index.jsp");
36
}
37
38
@RequestMapping("/test/login3.do")
39
public ModelAndView testLogin3(User user) {
40
// , Struts ActionForm,User ,
41
String username = user.getUsername();
42
String password = user.getPassword();
43
int age = user.getAge();
44
45
if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {
46
return new ModelAndView("loginError");
47
}
48
return new ModelAndView("loginSuccess");
49
}
50
51
@Resource(name = "loginService") // applicationContext.xml bean id loginService ,
52
private LoginService loginService; // spring get set , ,
53
54
@RequestMapping("/test/login4.do")
55
public String testLogin4(User user) {
56
if (loginService.login(user) == false) {
57
return "loginError";
58
}
59
return "loginSuccess";
60
}
61
}
以上の4つの方法の例は、Controllerには異なる要求urlが含まれています.一つのurlアクセスを利用して、urlパラメータによって異なる方法にアクセスすることもできます.コードは以下の通りです.
package controller;
02
03
import org.springframework.stereotype.Controller;
04
import org.springframework.web.bind.annotation.RequestMapping;
05
import org.springframework.web.bind.annotation.RequestMethod;
06
07
@Controller
08
@RequestMapping("/test2/login.do") // *.do Controller
09
public class TestController2 {
10
11
@RequestMapping
12
public String testLogin(String username, String password, int age) {
13
// , /test2/login.do ,
14
15
if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {
16
return "loginError";
17
}
18
return "loginSuccess";
19
}
20
21
@RequestMapping(params = "method=1", method=RequestMethod.POST)
22
public String testLogin2(String username, String password) {
// params method
// , get
if (!"admin".equals(username) || !"admin".equals(password)) {
return "loginError";
}
return "loginSuccess";
}
@RequestMapping(params = "method=2")
public String testLogin3(String username, String password, int age) {
if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {
return "loginError";
}
return "loginSuccess";
}
}
Request MappingはClassにおいて、父親のRequest要求urlと見なすことができ、Request Mappingは方法的には子Request要求urlと見なすことができ、親子の要求urlは最終的にページ要求urlと一致するため、Request Mappingもこのように書くことができる.
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/test3/*") // request url
public class TestController3 {
@RequestMapping("login.do") // request url, /test3/login.do
public String testLogin(String username, String password, int age) {
if (!"admin".equals(username) || !"admin".equals(password) || age < 5) {
return "loginError";
}
return "loginSuccess";
}
}
終わりの言葉これらのSpring MVCを把握することによって、すでに非常に良い基礎ができました.ほとんどの開発に対応できます.これらを熟練に把握することにより、Jsp、Velocity、Tiles、iText、POIなどの多様なビュー技術がより深く使えるようになります.Spring MVCフレームは使い方が分かりませんので、JSP技術だけを使うように強制することはありません.
回転:http://blog.csdn.net/wangpeng047/article/details/6983027