spring mvc 外部开发
需要
解决乱码,修改回显,json数据传输,根据出生日期计算年龄
在web.xml里面添加过滤器可以解决乱码问题
mvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:config/mvc-servlet.xml
mvc
*.do
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
encodingFilter
/*
index.jsp
mvc-servlet.xml配置
在这里我解释一下为什么要用
是一种简写形式,完全可以手动配置替代这种简写形式,
简写形式可以让初学都快速应用默认配置方案。 会自动
注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个
bean,是spring MVC为@Controllers分发请求所必须的。
并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat
支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。
后面,我们处理响应ajax请求时,就使用到了对json的支持。
后面,对action写JUnit单元测试时,要从spring IOC容器中取DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter
两个bean,来完成测试,取的时候要知道是 这一句注册的这两个bean。
修改页面回显 用model存储对象 可以实现回显
package com.hw.controller;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.hw.entity.Person;
import com.hw.entity.Person1;
import com.hw.service.impl.PersonServiceImpl;
import com.hw.utils.PageUtils;
@Controller
@RequestMapping("per")
public class PersonController {
private PersonServiceImpl db = new PersonServiceImpl();
@RequestMapping("listJson")//per/listJson.do
@ResponseBody//生成json格式,表中所有内容,集合
public List listJson(){
List list = db.listAll();
return list;
}
@RequestMapping("perJson")// per/perJson.do
@ResponseBody//生成json格式的单个对象
public Person perJson(int id){
Person list = db.getPerson(id);
return list;
}
@RequestMapping("addJson")//per/addJson.do
public String addJson() {
return "addJson";
}
@RequestMapping("addajax")
public void addajax(Person per,HttpServletResponse response) throws IOException {
db.addPerson(per);
PrintWriter out = response.getWriter();
out.print("1");
out.flush();
out.close();
}
@RequestMapping("toadd")
public String toAdd() {
return "add";
}
@RequestMapping("add")
public String add(Person per) {
db.addPerson(per);
return "redirect:list.do";
}
@RequestMapping("toupdate")
public String toUpdate(Model mod, int id) {// 一般用HttpServletRequest
Person person = db.getPerson(id);
mod.addAttribute("per", person);//用model存储对象 可以实现回显 只需要在修改页面对象.属性(el表达式)
return "update";
}
@RequestMapping("update")
public String update(Person per) {
db.updatePerson(per);
return "redirect:list.do";
}
@RequestMapping("del")
public String del(int id) {// 一般用HttpServletRequest
db.delPerson(id);
return "redirect:list.do";
}
@RequestMapping("delall")
public String delall(String id) {// 一般用HttpServletRequest
db.delAllPerson(id);
return "redirect:list.do";
}
@SuppressWarnings("deprecation")
@RequestMapping("list")
public String show(HttpServletRequest request) {// 一般用HttpServletRequest
int pageSize = 3;
String page = request.getParameter("currentPage") == null ? "1"
: request.getParameter("currentPage");// 取传过来的页数
int currentPage = Integer.parseInt(page);// 转让为整型
List list = db.list(currentPage, pageSize);
int dataCount = db.getCount();
PageUtils.page(request, currentPage, pageSize, list, dataCount);
/*Date dd=new Date();
List list1=new ArrayList();
for(Person per:list){
Person1 pp=new Person1();
pp.setId(per.getId());
pp.setName(per.getName());
pp.setBirthday(per.getBirthday());
pp.setAge(dd.getYear()-per.getBirthday().getYear());
list1.add(pp);
}
request.setAttribute("list", list1);*/
request.setAttribute("list", list);
return "list";
}
@SuppressWarnings("unused")
@InitBinder// spring mvc中对时间进行处理
private void InitBinder(HttpServletRequest request,
ServletRequestDataBinder binder) {
// spring mvc中对时间进行处理
binder.registerCustomEditor(Date.class, new CustomDateEditor(
new SimpleDateFormat("yyyy-MM-dd"), true));
}
}
在修改页面uodate.jsp 对象.属性名
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
My JSP 'add.jsp' starting page
根据出生日期计算年龄 用当前时间减去出生日期的时间
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
My JSP 'list.jsp' starting page
用户管理
用户编号
姓名
出生日期
年龄
操作(添加)
${list.id}
${list.name}
${list.birthday}
${list.age}
修改 删除
${group}
用ajax异步请求controller传过来的json数据
首先必须要有spring mvc的json的jar包
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
My JSP 'add.jsp' starting page
用户编号
姓名
出生日期
操作(添加)