框架第十四天

spring mvc 外部开发
需要


在原来的spring jar包的基础上添加两个jia包.png

解决乱码,修改回显,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包


框架第十四天_第1张图片
spring mvc json jar.png
<%@ 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












    
姓名:
出生日期:

用户编号 姓名 出生日期 操作(添加)

你可能感兴趣的:(框架第十四天)