一、当接受的参数为日期类型时

1.建立jsp页面,向Controller类传入参数

1.1当传入的参数为单个时

<body>
<form action="user/toDate.do" method="post">
生日:<input type="date" name="date" /><br>
<input type="submit" value="提交"/>
</form> </body>

1.2当传入的参数为多个时

<body>

    <form action="user/register.do" method="post">
姓名:<input type="text" name="name" /><br>
年龄:<input type="text" name="age" /><br>
生日:<input type="date" name="birthday" /><br> //这里name中的值要与实体类中的属性名相同
<input type="submit" value="提交"/>
</form> </body>

2.在Controller类中接受传入的日期类型的参数

2.1当只传入单个参数时

@Controller
@RequestMapping("/user")
public class MyController1 { //当参数为单个日期参数时
@RequestMapping("/toDate.do")
public String toDate(Date date) { //参数一定要和请求的参数名相同
System.out.println(date);
return "login";//默认请求转发到login页面
} //当参数为日期类型时
//1.使用initBinds 当你接受的参数为日期类型时先经过该方法进行处理。只能接受单个参数
@InitBinder
public void initBinder(ServletRequestDataBinder binder){
//只要网页中传来的数据格式为yyyy-MM-dd 就会转化为Date类型
binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),
true));
}
}

2.2当要传入多个参数时

public class User {
private String name;
private String password;
private int age;
private String sex;
private String address;
private String phone;
@DateTimeFormat(pattern="yyyy-MM-dd") //不是输出的结果格式。是接受参数的格式
private Date birthday;
}
@Controller
@RequestMapping("/user")
public class MyController1 { @RequestMapping("/register.do")
public String register(User user) {
System.out.println(user); //请求的参数名要和实体类中的属性名相同
return "login";
} }

3.跳转转发的页面

<body>
========login
欢迎登录
</body>

二、在Controller进行数据保存

2.1数据保存到request作用域中的方式

1.使用ModelAndView,那么该方法的返回类型必须是ModelAndView

//可以保存到ModelAndView,那么方法的返回值必须是ModelAndView
@RequestMapping("/login1.do") //RequestMapping:表示的就是你的访问地址
public ModelAndView list() { //参数一定要和请求的参数名相同
ModelAndView mv=new ModelAndView("login");
mv.addObject("name","张三");
return mv;
}

2.使用Model,方法的返回值还是字符串

//保存到Model中,方法的返回值还可以是字符串
@RequestMapping("/login2.do")
public String list(Model model) {
model.addAttribute("address","李四");
return "login";
}

3.使用Map,方法的返回值还是字符串

//保存到Map中
@RequestMapping("/login3.do")
public String list(Map<String,Object> map) {
map.put("name1","王五");
return "login";
}

4.原始的HttpServletRequest对象保存

@RequestMapping("/login5.do")
public String list(HttpServletRequest request) {
//用原始的HttpServletRequest对象保存
request.setAttribute("name","赵六");
return "login";
}

2.2数据保存到session作用域中的方式

1.使用原始的HttpSession保存

//保存到原始的HttpSession对象中
@RequestMapping("/login4.do")
public String list(HttpSession session) {
session.setAttribute("name","钱七");
return "login";
}

2.使用注解@SessionAttributes(names={key1,key2})

@Controller
@RequestMapping("/user")
@SessionAttributes(names= {"name1","address"}) //键名叫:name保存的作用域为session
public class MyController2 { }

三、静态资源的映射关系

创建jsp页面,显示静态图片

<body>
<img alt="动态漫画" src="/springmvc2/img/bb4.gif"/>
</body>

在web.xml配置文件中

1.第一种情况时,以上的图片可正常显示

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>springmvc2</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> <filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!-- 容器启动时加载springmvc的配置文件, 删除的话就是在访问时加载配置文件, 最好不要删可提高效率 -->
<load-on-startup>1</load-on-startup>
</servlet> <!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<!-- 只有后缀为do才经过DispatcherServlet -->
<url-pattern>*.do</url-pattern> </servlet-mapping>
</web-app>

2.第二种情况,图片不可以正常显示

<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!-- 容器启动时加载springmvc的配置文件, 删除的话就是在访问时加载配置文件, 最好不要删可提高效率 -->
<load-on-startup>1</load-on-startup>
</servlet> <!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<!-- /表示任何请求都要经过DispatcherServlet -->
<url-pattern>/</url-pattern>
</servlet-mapping>

3.解决第二种情况,在springmvc的配置文件中添加如下代码

<!-- 静态资源的释放 -->
<mvc:default-servlet-handler/>

四、SpringMVC完成Ajax功能。

1.Jquery中ajax使用的几种方式

Jquery:
$.get(url,data,callback,type);
Url:服务器的路径
Data: 请求参数
Callback: 回调函数
Type: 响应数据的类型。 (html, json)
$.post(url,data,callback,type); $.ajax({
Url:
Data:
Type:
Success:
Error:
Async:是否异步
dataType:
});

2.在SpringMVC使用ajax要加入jackson的jar包

3.在响应的方法上加上@ResponseBody :把java对象转化为json对象。方法的返回值可以是对象、集合、字符串

@Controller
@RequestMapping("ajax")
public class AjaxController { @RequestMapping(value="Ajax1",produces="text/html;charset='UTF-8'")
@ResponseBody //1.把hello作为内容响应给客户了
public String ajax1(String name) {
System.out.println(name);
return "张三";//表达的是把这个hello作为内容返回给回调函数,类似于out.print("hello")
}
@RequestMapping("Ajax2")
@ResponseBody //2.把java对象转化为json对象 需要使用jackson的jar包
public User ajax2(String name) {
User user=new User("张三","123456",20);
return user;
}
@RequestMapping("Ajax3")
@ResponseBody //2.把java对象转化为json对象 需要使用jackson的jar包
public List<User> ajax3(String name) {
User user1=new User("张三1","123456",20);
User user2=new User("张三2","123456",20);
User user3=new User("张三3","123456",20);
List<User> user=new ArrayList<User>();
user.add(user1);
user.add(user2);
user.add(user3);
return user;
}
}

五、当Ajax返回的为字符串,且字符串中含有汉字,那么就会出现字符乱码

1.第一种解决方法

@Controller
@RequestMapping("ajax")
public class AjaxController {
//当出现乱码时
//在@RequestMapping中添加属性produces
@RequestMapping(value="Ajax1",produces="text/html;charset='UTF-8'")
@ResponseBody //1.把hello作为内容响应给客户了
public String ajax1(String name) {
System.out.println(name);
return "张三";//表达的是把这个hello作为内容返回给回调函数,类似于out.print("hello")
}
}

2.第二种在springmvc的配置文件中添加如下代码

<!-- 2.开启注解驱动AnnotationHandlerMapping  设置字符编码-->
<mvc:annotation-driven>
<!-- 当出现乱码时 -->
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<!-- 通过构造方法给该类属性赋值
index表示构造方法的第一个参数。value第一个参数的值
-->
<constructor-arg index="0" value="utf-8"></constructor-arg>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>

springmvc学习日志二的更多相关文章

  1. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  2. springMVC学习日志一

    一.springMVC流程图省略 二.写一个简单的springmvc的demo来说明 2.1引入springMVC相关的jar包 2.2配置DispatcherServlet 在web.xml < ...

  3. springMVC学习笔记(二)-----注解和非注解入门小程序

    最近一直在做一个电商的项目,周末加班,忙的都没有时间更新博客了.终于在上周五上线了,可以轻松几天了.闲话不扯淡了,继续谈谈springMvc的学习. 现在,用到SpringMvc的大部分使用全注解配置 ...

  4. SpringMVC学习(二)

    SpringMVC入门(注解方式) 需求 实现商品查询列表功能. 第一步:创建Web项目 springmvc02 第二步:导入jar包 第三步:配置前端控制器 在WEB-INF\web.xml中配置前 ...

  5. SpringMVC学习笔记(二)

    一.HandleMapping和HandlerAdapter的讲解 HandleMapping:处理映射器,可以理解为为请求的url查找对应的Controller类. HandlerAdapter:可 ...

  6. SpringMVC学习(二)———— 参数绑定

    一.参数绑定 1.1.什么是参数绑定? 客户在浏览器端会提交一些参数到服务器端,比如用户的登录等,就会传username 和 password过来,springmvc则通过参数绑定组件将请求参数的内容 ...

  7. springMVC学习 十二 拦截器

    一 拦截器概述 拦截器技术比较像java web技术中的过滤器技术,都是发送 请求时被拦截器拦截,在控制器的前后添加额外功能.但是和Spring中的Aop技术是由区别的.AOP 在特定方法前后扩充(一 ...

  8. SpringMVC学习笔记二:常用注解

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6831976.html  参考:http://www.cnblogs.com/leskang/p/5445698 ...

  9. springmvc学习笔记二:重定向,拦截器,参数绑定

    Controller方法返回值 返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加model数据.指定view. 返回void 在Contro ...

随机推荐

  1. SQL2008 合并多个结构相同的表的所有数据到新的表

    select * into tikua from (select * from tiku20210303 union all select * from tiku) a

  2. poj 折半搜索

    poj2549 Sumsets 题目链接: http://poj.org/problem?id=2549 题意:给你一个含有n(n<=1000)个数的数列,问这个数列中是否存在四个不同的数a,b ...

  3. 数据库count用法

    count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL  count(1)包括了所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL  count(列名)只包 ...

  4. vulnhub-DC:4靶机渗透记录

    准备工作 在vulnhub官网下载DC:4靶机https://www.vulnhub.com/entry/dc-4,313/ 导入到vmware,设置成NAT模式 打开kali准备进行渗透(ip:19 ...

  5. IO多路复用详解

    假如你想了解IO多路复用,那本文或许可以帮助你 本文的最大目的就是想要把select.epoll在执行过程中干了什么叙述出来,所以具体的代码不会涉及,毕竟不同语言的接口有所区别. 基础知识 IO多路复 ...

  6. [ZJOI2010]基站选址,线段树优化DP

    G. base 基站选址 内存限制:128 MiB 时间限制:2000 ms 标准输入输出 题目类型:传统 评测方式:文本比较   题目描述 有N个村庄坐落在一条直线上,第i(i>1)个村庄距离 ...

  7. Python - 函数实战

    前言 参考的是慕课网提供的实战,自己编码 http://www.imooc.com/wiki/pythonlesson1/function2.html 什么是模块化程序设计 在进行程序设计时将一个大程 ...

  8. SQL语句(四)联表查询

    目录 一.关联查询的分类 按年代分 按功能分 二.sql92语法的连接 语法 1. 简单应用 2. 为表起别名 3. 加入筛选 4. 加入分组 5. 三表连接 6. 非等值连接 7. 自连接 三.sq ...

  9. 2019.06.28 MERGE INTO备忘

    --保存主表 MERGE INTO dbo.DeliveryReceiving AS t USING @ReceiveMainDt AS s ON t.Id=s.id WHEN MATCHED THE ...

  10. Netty入门(二):Channel

    前言 Netty系列索引: 1.Netty入门(一):ByteBuf 2.Netty入门(二):Channel 在Netty框架中,Channel是其中之一的核心概念,是Netty网络通信的主体,由它 ...