目录
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-databind2.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)运行界面如图



