springmvc学习日志二
一、当接受的参数为日期类型时
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学习日志二的更多相关文章
- (转)SpringMVC学习(十二)——SpringMVC中的拦截器
http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...
- springMVC学习日志一
一.springMVC流程图省略 二.写一个简单的springmvc的demo来说明 2.1引入springMVC相关的jar包 2.2配置DispatcherServlet 在web.xml < ...
- springMVC学习笔记(二)-----注解和非注解入门小程序
最近一直在做一个电商的项目,周末加班,忙的都没有时间更新博客了.终于在上周五上线了,可以轻松几天了.闲话不扯淡了,继续谈谈springMvc的学习. 现在,用到SpringMvc的大部分使用全注解配置 ...
- SpringMVC学习(二)
SpringMVC入门(注解方式) 需求 实现商品查询列表功能. 第一步:创建Web项目 springmvc02 第二步:导入jar包 第三步:配置前端控制器 在WEB-INF\web.xml中配置前 ...
- SpringMVC学习笔记(二)
一.HandleMapping和HandlerAdapter的讲解 HandleMapping:处理映射器,可以理解为为请求的url查找对应的Controller类. HandlerAdapter:可 ...
- SpringMVC学习(二)———— 参数绑定
一.参数绑定 1.1.什么是参数绑定? 客户在浏览器端会提交一些参数到服务器端,比如用户的登录等,就会传username 和 password过来,springmvc则通过参数绑定组件将请求参数的内容 ...
- springMVC学习 十二 拦截器
一 拦截器概述 拦截器技术比较像java web技术中的过滤器技术,都是发送 请求时被拦截器拦截,在控制器的前后添加额外功能.但是和Spring中的Aop技术是由区别的.AOP 在特定方法前后扩充(一 ...
- SpringMVC学习笔记二:常用注解
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6831976.html 参考:http://www.cnblogs.com/leskang/p/5445698 ...
- springmvc学习笔记二:重定向,拦截器,参数绑定
Controller方法返回值 返回ModelAndView controller方法中定义ModelAndView对象并返回,对象中可添加model数据.指定view. 返回void 在Contro ...
随机推荐
- C语言:编译具体过程及隐藏
对于平常应用程序的开发,很少有人会关注编译和链接的过程,因为我们使用的工具一般都是流行的集成开发环境(IDE),比如 Visual Studio.Dev C++.C-Free 等.这些功能强大的 ID ...
- python 交换变量的值 不需要借助第三个变量
>>> a,b,c,d=1,2,3,4>>> a,b,c,d=d,c,b,a>>> print(a,b,c,d)4 3 2 1>>&g ...
- 传统.NET 4.x应用容器化体验(5)
前面几篇都是基于阿里云ECS直接玩的,有童鞋问直接用Windows Server 2019可以玩不,本篇就为你介绍一下如何给Windows Server 2019配置Docker环境. 1 准备工作 ...
- Spring,Spring-boot(一)
前言 Spring作为java开源世界第一开源框架,已经成为事实上的Java EE开发标准. 最根本的使命就是简化Java开发. 不重复制造车轮 Don't reinvent the wheel .从 ...
- STEVE JOBS: Stanford Commencement【Stay Hungry. Stay Foolish.】
In 2005, a year after he was first diagnosed with cancer, Apple CEO Steve Jobs made a candid speech ...
- 爬取房价信息并制作成柱状图XPath,pyecharts
以长沙楼盘为例,看一下它的房价情况如何url = https://cs.newhouse.fang.com/house/s/b91/ 一.页面 二.分析页面源代码 我们要获得的数据就是名字和价格,先来 ...
- python errno库与socket.connect_ex()方法的结合使用
前言:一般socket链接会首选connect方法,该方法会一直尝试链接.那么今天展示下connect_ex()方法,该方法如果链接成功会返回0,失败会返回errno库中的errorcode中的key ...
- js排序——sort()排序用法
sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串Unicode码点. 语法:array.sort(fun):参数fun可选.规定排序顺序.必须是函数.注:如果调用该方法 ...
- 从零开始了解kubernetes
kubernetes 已经成为容器编排领域的王者,它是基于容器的集群编排引擎,具备扩展集群.滚动升级回滚.弹性伸缩.自动治愈.服务发现等多种特性能力. 本文将带着大家快速了解 kubernetes , ...
- 从 HTTP 切换到 HTTPS,这下我的技术博客安全了吧?
博客园 的小伙伴们,大家好,我是刚脱离险境的二哥呀! 很久(大概两年)之前,我就搞了一个独立的个人博客网站,长下面这样. 大家有访问过的,可以在评论区扣 1 可惜一直没搞备案和 HTTPS,导致每次访 ...