SpringMVC学习(二)
大纲
1接受的参数为日期类型
2 controller进行数据保存
3 Controller如何进行重定向跳转
4 静态资源的映射
5 Springmvc完成ajax功能。(jquery. $)
6 Springmvc完成ajax功能,controller类返回的数据类型为String且为汉字时出现乱码
1 接收的参数为日期类型时
1.1新建动态web工程
1.2导入springmvc相关jar包
1.3配置web.xml文件(已经安装了插件,使用插件加载后再修改相关参数,快捷键:Alt+/)
*修改如下地方
1.4创建Spring Bean Configuration File文件,配置springmvc配置文件(创建的xml文件名需要与web.xml中classpath后的文件名对照)
*使用插件引入jar包路径
*添加包扫描、开启驱动、视图解析器
1.5在WEB-INF目录下新建view文件夹,添加index.jsp文件
*注意:WEB-INF下的资源,无法通过浏览器直接访问也不能通过重定向访问,只能通过请求转发访问
1.6以User为例在controller包下,创建UserController类,添加相关方法,该方法接收的参数为单参,返回类型为String,参数为Date类型,或者该方法接收的参数为User实体类
way1:使用@InitBinder对日期类型的数据进行处理
1 @InitBinder 2 public void initBinder(ServletRequestDataBinder binder){ 3 //只要网页中传来的数据格式为yyyy-MM-dd 就会转化为Date类型 4 binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), 5 true)); 6 }
*接收的参数为实体类
way2:封装到实体类,在实体类中使用@DateTimeFormat(pattern="yyyy-MM-dd")
1.7在WebContent目录下添加login.jsp文件
注意:input标签中name属性的值,要与controller方法中的参数一样,
2 controller进行数据保存
2.1保存的作用域为request的四种方法
1)使用ModelAndView,该方法的返回类型必须是ModelAndView
*在index.jsp中使用${requestScope.name}获取保存的数据
2)使用Model,该方法的返回值是String类型,参数类型为Model
*在index.jsp中使用${requestScope.name}获取保存的数据
3)使用Map,方法的返回值是Sting类型,参数类型为Map<泛型>
*在index.jsp中使用${requestScope.name}获取保存的数据
4)使用原始的HttpServletRequest对象保存
2.2保存的作用域为session的两种方法
1)使用原始的HttpSession保存,返回类型为String,参数类型为HttpSession
*在index.jsp中使用${sessionScope.name}获取保存的数据
2)使用注解@SessionAttributes(name={key1,key2}),参数类型为HttpSession
*在index.jsp中使用 ${applicationScope.name} 获取保存的数据
3 Controller如何进行重定向跳转
*使用redirect进行重定向跳转
4 静态资源的映射
*静态资源可以正常的显示。
*若DispatchServlet处理的请求的地址为/,那么它会处理静态资源,运行时会报错404,故需要在springmvc的配置文件中添加,释放静态资源的语句
<mvc:default-servlet-handler/> :表示不处理静态资源
5 Springmvc完成ajax功能。(jquery. $)
5.0导入jackson的三个jar包,这这三个jar包与springmvc联合使用
5.1在WebContent目录下新建js目录,再导入jar包(jquery.min.js)
5.2在WebContent目录下新建ajax.jsp文件,在head标签内添加script标签通过src属性引入jquery.min.js
5.3在controller包下新建AjaxController类,添加相关方法
*注意:这里需要通过@ResponseBody,将Java对象转化成json对象,且将静态资源释放后,return的数据才可以在页面上使用
1)返回类型为String类型
*在ajax.jsp页面使用jQuery,通过alert弹出ajax1返回的值
注意:jQuery中的name与ajax1方法的参数一样
2)返回类型为User实体类对象
*在ajax.jsp页面使用jQuery,通过alert弹出ajax2,返回的值
3)返回类型为集合类型
*在ajax.jsp页面使用jQuery,通过alert弹出ajax3,返回的
6 Springmvc完成ajax功能,controller类返回的数据类型为String且为汉字时出现乱码
*原因:返回String类型时源码中的默认编码为ISO-8859-1
解决方案:在开启驱动时,设置编码,将默认值该为utf-8