书上说,天下没有不散的宴席;不要怕,书上还说了,人生何处不相逢
昨天中秋,劳逸结合
配置过滤器:
<!-- 中文编码过滤器配置-->
<filter>
<filter-name>encode</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!--
参数配置
private String encoding;
private boolean forceRequestEncoding;
private boolean forceResponseEncoding;
-->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encode</filter-name>
<url-pattern>/*
<!-- 添加jackson的依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
<script type="text/javascript">
function showStu() {
//使用jQuery封装的ajax()方法发送请求
$.ajax({
url: "${pageContext.request.contextPath}/list.action",//获取发布的项目的根路径
type: "get",
dataType: "json",
success: function (stuList) {
var s = "";
$.each(stuList, function (i, stu) {
s += stu.name + "----" + stu.age + "
";
});
//回显数据
$("#mydiv").html(s);
}
});
}
</script>
package com.bjpowernode.controller;
import com.bjpowernode.pojo.Student;
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.List;
/**
* @author Yangqing
* @date 2022/9/11 19:53
*/
@Controller //使用@RestController注解类,可以不用@ResponseBody注解方法
public class StudentListAction {
@RequestMapping("/list")
@ResponseBody //解析ajax请求,必须要在springmvc.xml文件中添加注解驱动
public List<Student> list(){
List<Student> list = new ArrayList<>();
Student stu1 = new Student("张三",23);
Student stu2 = new Student("李四",24);
Student stu3 = new Student("王五",25);
list.add(stu1);
list.add(stu2);
list.add(stu3);
return list;//SpringMVC框架负责将集合转为json数组
}
}
,它用来解析@ResponseBody注解<!-- 必须要添加注解驱动,为了支持ajax请求的-->
<mvc:annotation-driven></mvc:annotation-driven>
请求转发是基于服务器端的跳转
重定向是基于客户端的跳转
(弹幕老哥们:)
(请求转发与重定向,发起请求的对象不同,内连接是服务器转发的,而重定向是浏览器)
(1.服务器内部转发2.客户端重定向)
请求转发的地址栏是http://localhost:8080/one.action (接电话不挂断,给别人,别人来解决)
而重定向的地址栏是http://localhost:8080/main.jsp (接电话,挂断,重新打,打给别人,别人来解决)
四种跳转方式如下:
观察不同请求的地址栏,来理解请求与重定向
关键字使用
public static final String REDIRECT_URL_PREFIX = "redirect:";
public static final String FORWARD_URL_PREFIX = "forward:";
例如:
@RequestMapping("/two")
public String two(){
System.out.println("这是请求转发action跳转....");
//如果是return"/other.action"就相当于下一行
// /admin//other.action.jsp
//forward:这组字符串可以屏蔽前缀和后缀的拼接.实现请求转发跳转
return "forward:/other.action";//默认是请求转发,使用视图解析器拼接前缀后缀进行页面跳转
}
具体操作看代码
不需要去创建,直接拿来使用即可。
去看代码:springmvcall/springmvc_004_jump
) @InitBinder
public void initBinder(WebDataBinder dataBinder){
//注册自定义编辑器
dataBinder.registerCustomEditor(Date.class,new CustomDateEditor(sf,true));
}
在页面上显示好看的日期,必须使用JSTL
步骤1. 添加依赖JSTL2.在页面上导入标签库 3.使用标签显示数据
如果是单个日期对象,直接转为好看的格式化的字符串进行显示
如果是list中的实体类对象的成员变量是日期类型,则必须使用JSTL进行显示
首先导入依赖:
<!--添加JSTL依赖-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
在页面上导入标签库:
<%--导入jstl核心标签库--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--导入jstl格式化标签库--%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
页面显示部分:
<table width="800px" border="1">
<tr>
<th>姓名</th>
<th>生日</th>
</tr>
<c:forEach items="${list}" var="stu">
<tr>
<td>${stu.name}</td>
<td>
${stu.birthday}-------<fmt:formatDate value="${stu.birthday}" pattern="yyyy-MM-dd"></fmt:formatDate>
</td>
</tr>
</c:forEach>
</table>
关键的JSTL语句:
<fmt:formatDate value="${stu.birthday}" pattern="yyyy-MM-dd"></fmt:formatDate>
看代码即可:springmvcall/springmvc_004_jump
jackson
ajax
json