Java-springMVC框架:springMVC取参数值、把值放入作用域方法

 Java-springMVC框架:springMVC取参数值、把值放入作用域方法

package com.zp.upload;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.json.JSONException;
import org.apache.struts2.json.JSONUtil;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;

import com.zp.bean.User;

@Controller
@RequestMapping("model")
@SessionAttributes("sessionUser")
public class ModelMapController {

	/***********************************参数获取的方式**********************************************/
	//http://localhost:8080/zpupload/model/index1/3/fyl.html
	@RequestMapping("/index1/{id}/{name}")
	public String index1(@PathVariable("id") Integer id,@PathVariable("name") String username) {
		System.out.println("参数一:id="+id+",参数二:username="+username);
		//结果为:参数一:id=3,参数二:username=fyl
		return "model/index1";
	}
	
	//http://localhost:8080/zpupload/model/index2.html?id=56&name=mm
	@ResponseBody
	@RequestMapping("/index2")
	public String index2(Integer id,String name) {
		System.out.println("参数一:id="+id+",参数二:name="+name);
		//结果:参数一:id=56,参数二:name=mm
		return "index2";
	}
	
	//http://localhost:8080/zpupload/model/index3.html?username=mm&age=17&address=北京
	@ResponseBody
	@RequestMapping("/index3")
	//参数名要和User 类属性名一致,属性也要相同(例如Integer不能穿String类型的值)
	public String index3(User user) {
		System.out.println("username="+user.getUsername()+";age="+user.getAge()+";address="+user.getAddress());
		//结果:username=mm;age=17;address=北京
		return "index3";
	}
	
	//http://localhost:8080/zpupload/model/index4.html?name=fyl
	@ResponseBody
	@RequestMapping("/index4")
	public String index4(HttpServletRequest request) {
		System.out.println(request.getParameter("name"));
		//结果:fyl
		return "index4";
	}
	
	/**************作用域的问题   reuqest session application ************/
	/**************作用域的范围:request*******/
	/**
	 * index5.jsp EL表达式返回值
		<h1>1111 ${message }</h1>
		<h1>2222 ${user.username }</h1>
		<h1>3333 ${user.age }</h1>
		<h1>4444 ${sessionMessage }</h1>
		<h1>5555 ${sessionUser.username }</h1>
		<h1>6666 ${sessionUser.age }</h1>
	 */
	@RequestMapping("/index5")
	public String index5(HttpServletRequest request) {
		request.setAttribute("message", "request作用域-HttpServletRequest-index5");
		return "model/index5";
	}
	
	@RequestMapping("/index6")
	public String index6(ModelMap map) {
		map.addAttribute("message", "request作用域-ModelMap-index6");
		return "model/index5";
	}
	
	@RequestMapping("/index7")
	public ModelAndView index7() {
		//视图和作用域融合体
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("model/index5");
		modelAndView.addObject("message", "request作用域-ModelAndView-index7");
		return modelAndView;
	}
	
	//@ModelAttribute 需要传递对象
	@RequestMapping("/index8")
	public String index8(@ModelAttribute("user") User user) {
		user.setUsername("request作用域-@ModelAttribute-index8");
		user.setAge(18);
		return "model/index5";
	}
	
	/**************以流的方式返回数据 *******/
	@ResponseBody
	@RequestMapping("/data1")
	public String data1(User user) throws JSONException {
		user.setUsername("MM");
		user.setAddress("北京");
		List<Pattern> patterns = new ArrayList<>();
		patterns.add(Pattern.compile("age|address"));
		//不显示key为"age|address",不显示null,以JSON方式返回      {"username":"MM"}
		return JSONUtil.serialize(user, patterns, null, false, true, false);
	}
	
	@RequestMapping("/data2")
	public void data2(HttpServletResponse response) throws IOException, JSONException {
//		response.setCharacterEncoding("UTF-8");
		response.setContentType("application/json;charset=utf-8");
		User user = new User();
		user.setUsername("ff");
		user.setAge(18);
		user.setAddress("海淀区");
		PrintWriter writer = response.getWriter();
		writer.println(JSONUtil.serialize(user));
		writer.flush();
		writer.close();
	}
	
	/**************作用域的范围:session*******/
	@RequestMapping("/index9")
	public String index9(HttpServletRequest request) {
		//放入session域后,其他请求也会取到sessionMessage 值
		request.getSession().setAttribute("sessionMessage", "session作用域-@-index9");
//		request.setAttribute("sessionMession", "session作用域-@-index9");
		return "model/index5";
	}
	
	
	/*的时候,方法的@ModelAttribute先调用 会调用一个指明:@ModelAttribute隐式的对象创建,
	 * 第一步
	 * 如果@SessionAttributes没有sessionUser属性
	 * 带@ModelAttribute方法先执行,
	 	@ModelAttribute("sessionUser")
		public User getUser() {
			return new User();
		}
		上面代码及:User user = new User(); 
	        对象创建成功以后在赋给 @SessionAttributes
		session.setAttribute("sessionUser",user);
	* 第二步(index10)
	  @ModelAttribute("sessionUser") User user
		User user = (User)session.getAttribute("sessionUser");
		user.setAge(17);
	 * */
	@RequestMapping("/index10")
	public String index10(@ModelAttribute("sessionUser") User user) {
		user.setUsername("session作用域-@ModelAttribute-index10");
		user.setAge(17);
		return "model/index5";
	}
	
	//@ModelAttribute隐式的对象
	@ModelAttribute("sessionUser")
	public User getUser() {
		return new User();
	}
	
	/**************注销session*******/
	@RequestMapping("/logout")
	public String logout(HttpSession session) {
		session.invalidate();//清除所有的会话
//		session.removeAttribute("user");
		return "model/index5";
	}
	
	@RequestMapping("logout2")
	public String logout2(SessionStatus sessionStatus) {
		sessionStatus.setComplete();
		return "model/index5";
	}
	
	/*application的获取*/
	
//	@RequestMapping("/application")
//	public String application(ServletContext context){
//		System.out.println(context);
//		return "ok";
//	}
	
//	@RequestMapping("/application")
//	public String application(HttpServletRequest request){
//		request.getServletContext();
//		return "ok";
//	}
	
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值