栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC---四大作用域

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC---四大作用域

四大作用域(page,request,session,application)
  1. request
  2. session
  3. application
  4. 返回JSON数据
  5. 路径参数–入门
  6. 课后练习
request作用域

ModelAndView,ModelMap 默认都放入request里

//request作用域
    @RequestMapping("/put")
    public String put(ModelMap map){
        map.put("food","2个披萨");
        System.out.println("放入食物...");
        return "success";
    }

在首页通过${requestScope.food}得到数据

session作用域

与request唯一不同处,只需要在类的上方加入注释如下:

@SessionAttributes({"food1"})	//food1即session变量名
//session作用域
    @RequestMapping("/put2")
    public String put(ModelMap map){
        map.put("food1","8个披萨");
        System.out.println("放入食物...");
        return "success";
    }

在首页通过${sessionScope.food1}得到数据

销毁session作用域

在学springmvc前用:session.invalidate();进行销毁
springmvc销毁session作用域做法:

@RequestMapping("/logout")
    public String logout(SessionStatus ss){
        System.out.println("销毁session作用域成功...");
        ss.setComplete();	//销毁session作用域
        return "success";
    }
application作用域
//application作用域
    @RequestMapping("/put3")
    public String put(HttpSession se){
        ServletContext app=se.getServletContext();
        app.setAttribute("food3","1个9寸披萨");
        return "success";
    }

在首页通过${applicationScope.food3}得到数据

返回JSON数据

可以创建一个统一JSON返回的类代码如下:
变量根据开发者自己需求自定义

public class JsonResult {
    int code;
    String msg;
    Object data;
    public JsonResult(int code,String msg,Object data){
        this.code=code;
        this.msg=msg;
        this.data=data;
    }
    public JsonResult(int code,String msg){
        this.code=code;
        this.msg=msg;
    }
    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "JsonResult{" +
                "code=" + code +
                ", msg='" + msg + ''' +
                ", data=" + data +
                '}';
    }
}

创建返回JSON的测试方法
关键:@ResponseBody (json必要的注释) 返回值为上方创建的json转换类
允许跨域:@CrossOrigin

//控制器 返回JSON  last:response.setContentType("application/json")
    @ResponseBody
    @CrossOrigin
    @RequestMapping("/json")
    public JsonResult json(){
        List list=new ArrayList();
        list.add("凯南");
        list.add("剑姬");
        list.add("瑞文");
        JsonResult ok=new JsonResult(200,"查询成功",list);
        return ok;
    }

前台通过按钮ajax请求得到数据,代码如下:
不要忘了导入jquery-

           

这样就可以得到数据啦~

拓展------美化路径参数传值(入门)

老式写法:
https://www.baidu.com?id=12345&question=中国
新式写法:
https://www.baidu.com/12345/中国

接下来就实现一下springmvc如何传路径参数
代码如下:

@RequestMapping("/baidu/{question}/{id}")
    public String baidu(@PathVariable("id") String id,@PathVariable("question") String question){
        System.out.println("你要查询的id="+id+"问题是:"+question);
        return "success";
    }

运行项目访问该方法并且通过/进行传值即可

课后练习

1 表单–》将一件商品放入购物车(这里是放入session域)
2 ajax查询购物车 session
3 清空购物车(清空session域)

具体实现

商品类Goods

public class Goods {
    String name;
    int num;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    @Override
    public String toString() {
        return "Goods{" +
                "name='" + name + ''' +
                ", num=" + num +
                '}';
    }
}

购物车类Cart

	
public class Cart {
    List list;
    Map map;

    public Map getMap() {
        return map;
    }

    public void setMap(Map map) {
        this.map = map;
    }

    public List getList() {
        return list;
    }

    public void setList(List list) {
        this.list = list;
    }

    @Override
    public String toString() {
        return "Cart{" +
                "list=" + list +
                ", map=" + map +
                '}';
    }
}

购物车显示页CartMsg.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    购物车详情


    My Cart
    商品名:${sessionScope.product.list[0].name}
    
商品数量:${sessionScope.product.list[0].num}

购物车操作页Cart.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    购物车
    
    


    
商品名:
商品数量:

方法(添加商品,清空,json获取)

@Controller
@RequestMapping("/anno")
@SessionAttributes({"product"})
public class AnnoController {
	//添加商品
	@RequestMapping("/addproduct")
    public String addproduct(ModelMap map, Cart goods){
        map.put("product",goods);
        return "CartMsg";
    }
	//查询购物车
    @ResponseBody
    @RequestMapping("/Cartjson")
    public JsonResult Cartjson(ModelMap map){
        System.out.println("购物车="+map.get("product"));
        Cart product=(Cart) map.get("product");
        JsonResult ok=new JsonResult(200,"查询成功",product);
        System.out.println("ok="+ok);
        return ok;
    }
	//清空购物车
    @RequestMapping("/clearCart")
    public String clearCart(SessionStatus ss){
        ss.setComplete();
        System.out.println("清空购物车...");
        return "CartMsg";
    }

}

练习就这样完成啦~~~~下期再见ヾ(=・ω・=)o

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/358499.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号