spring_MVC_02値転送

5548 ワード

Spring MVCを使ってページ提出データの取得と返却を実現します.
 
@Request Paramを使って、ページ要求がパラメータに入る必要があることを示します.
package com.hqh.student.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

//      
@Controller
public class FirstController {
	
	//        
	@RequestMapping(value={"/hello"})
	public String hello(@RequestParam(required=true) int id) {
		System.out.println("FirstController.hello()");
		return "hello";
	}
}
要求されたURLがパラメータに入っていない場合、エラーが発生します.要求されたパラメータ値が伝達されていません.
正しいアクセス: 
http://localhost:8080/spring_mvc_01/ハロー?id=1
 
デフォルトのパラメータを設定
package com.hqh.student.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

//      
@Controller
public class FirstController {
	
	//        
	@RequestMapping(value={"/hello"})
	public String hello(@RequestParam(required=true,defaultValue="100") int id) {
		System.out.println(id);
		return "hello";
	}
}
 
転送パラメータがない場合は、エラーなくデフォルトの値を使用します.
http://localhost:8080/spring_mvc_01/ハロー
結果:100
パラメータが入ってきたら、転送のパラメータを使ってデフォルトの値が無効になります.
http://localhost:8080/spring_mvc_01/ハロー?id=9 
結果:9
 
ページからのパラメータ名をカスタマイズします.
package com.hqh.student.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

//      
@Controller
public class FirstController {
	
	//        
	@RequestMapping(value={"/hello"})
	public String hello(@RequestParam(value="userId") int id) {
		System.out.println(id);
		return "hello";
	}
}
 ページ転送を指定するパラメータ名はuserIdで、パラメータ名がuserIdの場合にのみ正しくアクセスできます.
http://localhost:8080/spring_mvc_01/hello?userId=1
結果:1
 
 
クライアントにデータを返す
MAPを通してデータを転送します.方法のパラメータの中でMapを定義してからMapの中にput値を設定すれば、ページはkeyを通して取れます.
NBすぎます
@RequestMapping(value={"/say"})
public String say(String name,Map<String,Object> retMap) {
	System.out.println("name="+name);
	retMap.put("say", "spring mvc is very good!");
	return "say";
}
 WEB-INF/jsp/say.js
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>${say}</h1>
</body>
</html>
 
要求:http://localhost:8080/spring_mvc_01/say?name=zhangさん
バックグラウンドで取得したデータ:name=zhangsan
ページで取得したデータ:spring mvc is very good!
 
 Modelを使ってデータを転送する(推奨)
@RequestMapping(value="/shout")
public String shout(Model model) {
	//  key,key Object. ,   String, key string
	model.addAttribute("struts2 is bad!");
	//  key,value    
	model.addAttribute("spring_mvc", "so easy!");
	return "shout";
}
 WEB-INF/jsp/shot.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h1>${string}</h1>
	<h1>${spring_mvc}</h1>
</body>
</html>
 URL:http://localhost:8080/spring_mvc_01/ショップ
ページに返された結果:
struts 2 is bad
so easy
 
 requestオブジェクト、sessionオブジェクトなどを取得します.
//  request  
@RequestMapping(value={"/execute"})
public String execute(HttpServletRequest request) {
 //spring    request    
 HttpSession session = request.getSession();
 String uri = request.getRequestURI();
 System.out.println(uri);
 return "shout";
}