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

SpringMVC回显数据和拦截器

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

SpringMVC回显数据和拦截器

目录

1.controller里的数据返回网页并回显

2.springmvc返回json数据

3.springmvc拦截器


1.controller里的数据返回网页并回显

在servlet中,用request和session把数据保存并在网页上获取该数据。

request: 作用范围: 同一个请求内有效。setAttribute(key,value)

session:作用范围: 同一个会话有效,只要会话不关闭会一直有效。setAttribute(key,value)

网页获取保存的数据:

使用EL表达式。${scope.key}

package com.cmw.controller;
​
import com.cmw.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
​
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;
​

@Controller
@SessionAttributes(value = {"user1","user2"})//设置哪些model的key值在session的范围内
public class HelloController {
    @RequestMapping(value = "/list1")
    public String list1(HttpServletRequest request){
        Student student=new Student(1,"士大夫",new Date(),"sdf");
        request.setAttribute("s1",student);
        return "list.jsp";//转发
    }
//request和tomcat绑定,model是springmvc里面的
​
    @RequestMapping(value = "list2")
    public String list2(Model model){
        Student student=new Student(2,"撒地方",new Date(),"xzv");
        //可以保存到model中,和request一样,同一个请求
        model.addAttribute("s2",student);
        return "list.jsp";
    }
​
    //在session范围保存
    @RequestMapping("/list3")
    public String list3(HttpSession session){
        Student student=new Student(3,"赌神发哥",new Date(),"qwe");
        session.setAttribute("user",student);
        return "list.jsp";
    }
​
    @RequestMapping("/list4")
    public String list4(Model model){
        Student student=new Student(4,"公鸡",new Date(),"fgh");
        Student student1=new Student(5,"顺丰大概",new Date(),"bnm");
        model.addAttribute("user1",student);
        model.addAttribute("user2",student1);
        return "list.jsp";
    }
​
    @RequestMapping("/list5")
    public String list5() {
        System.out.println("----==========----");
        return "redirect:error.jsp";//当springmvc检测返回的字符串中含有redirect:时 它认为要进行重定向跳转
    }
}

在webapp中创建list.jsp

<%--
  Created by IntelliJ IDEA.
  User: 86151
  Date: 2022/6/8
  Time: 14:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    <%--list1--%>
    ${requestScope.s1}
    
    <%--list2--%>
    ${requestScope.s2}
<%--list3--%> ${sessionScope.user}
<%--lsit4--%> ${sessionScope.user1}
${sessionScope.user2}

2.springmvc返回json数据

(1)内置了一个jar. jackson的jar包



  com.fasterxml.jackson.core
  jackson-databind
  2.13.2.2

(2) 在controller返回的数据类型变成javabean对象。

package com.cmw.controller;
​
import com.cmw.entity.Student;
import com.cmw.util.CommonResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
​
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
​

@Controller
public class StudentController {
    @RequestMapping("list")
    @ResponseBody       //将java对象转化为json格式的数据
    public CommonResult list(){
        List list=new ArrayList();
        list.add(new Student(1,"撒旦",new Date(),"郑州"));
        list.add(new Student(2,"周星驰",new Date(),"撒地方"));
        list.add(new Student(3,"杜甫",new Date(),"vbd"));
        list.add(new Student(4,"用途",new Date(),"阿文"));
        return new CommonResult(2000,"查询成功",list);
    }
}

建Student实体类

package com.cmw.entity;
​
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
​
import java.util.Date;
​

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private Integer id;
    private String name;
​
    @JsonFormat(pattern = "yyyy-MM-dd")//转化为json格式的时间
    private Date birthday;
    private String address;
}

建一个CommonResult类

package com.cmw.util;
​
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
​

@Data
@NoArgsConstructor
@AllArgsConstructor
public class CommonResult {
    private Integer code;
    private String msg;
    private Object data;
}

(3) 访问该路径

3.springmvc拦截器

(1)创建一个LoginInterceptor,并实现HandlerInterceptor

package com.cmw.interceptor;
​
import com.cmw.util.CommonResult;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.web.servlet.HandlerInterceptor;
​
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
​

public class LoginInterceptor implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        response.setContentType("application/json;charset=utf-8");
        //判断session中是否有值
        System.out.println("session中有值");
        Object user = request.getSession().getAttribute("user");
        if (user!=null){
            return true;
        }
        PrintWriter writer = response.getWriter();
        CommonResult commonResult=new CommonResult(5001,"请先登录",null);
        //把java对象转为json字符串
        ObjectMapper objectMapper=new ObjectMapper();
        String json=objectMapper.writeValueAsString(commonResult);
        writer.print(json);
        writer.flush();
        writer.close();
        return false;
    }
}

(2)在Controller层创建一个LoginController

package com.cmw.controller;
​
import com.cmw.util.CommonResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
​
import javax.servlet.http.HttpSession;
​

@Controller
public class LoginController {
    @RequestMapping("/login")
    @ResponseBody   //将java对象转化为json格式的数据
    public CommonResult login(String username, String password, HttpSession session){
        if ("admin".equals(username)&& "123456".equals(password)){
            session.setAttribute("user",username);
            return new CommonResult(2000,"登录成功",null);
        }else {
            return new CommonResult(5000,"账号或密码错误",null);
        }
    }
}

(3)在Controller层创建一个StudentController

package com.cmw.controller;
​
import com.cmw.entity.Student;
import com.cmw.util.CommonResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
​
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
​

@Controller
public class StudentController {
    @RequestMapping("list")
    @ResponseBody       //将java对象转化为json格式的数据
    public CommonResult list(){
        List list=new ArrayList();
        list.add(new Student(1,"撒旦",new Date(),"郑州"));
        list.add(new Student(2,"周星驰",new Date(),"撒地方"));
        list.add(new Student(3,"杜甫",new Date(),"vbd"));
        list.add(new Student(4,"用途",new Date(),"阿文"));
        return new CommonResult(2000,"查询成功",list);
    }
}

(4)在webapp中创建login.jsp

<%--
  Created by IntelliJ IDEA.
  User: 86151
  Date: 2022/6/9
  Time: 11:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title
    
    
    



    
        
        
            
                
            
            
                
            
        
        
                    提交
                    返回
                
    
​
    
        
            登录系统
            
                
                    
                        
                        
                        
                    
                
                
                    
                        
                        
                        
                    
                
                            
                
                    
                    
                    
                    
                    登录
                
                        
                注册 
            
        
    



(5)在webapp中创建一个elementui.jsp

<%--
  Created by IntelliJ IDEA.
  User: 86151
  Date: 2022/6/9
  Time: 11:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title
    <%--引入element的css样式--%>
    
    <%--引入vue的js文件,必须在element之前引入--%>
    
    
    
    <%--在element的js文件--%>
    



    
        
        
        
        
        
        
        
        
    

(6)在springmvc.xml中配置拦截器


    
        
            
            
            
            
            
            
            
            
        
    

(7)运行界面如图

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

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

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