java获取作用域的值_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表达式返回值

1111 ${message }

2222 ${user.username }

3333 ${user.age }

4444 ${sessionMessage }

5555 ${sessionUser.username }

6666 ${sessionUser.age }

*/

@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 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值