`
zxlaiye
  • 浏览: 96061 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

spring mvc 笔记

    博客分类:
  • java
阅读更多
最近练习了一下spring mvc,计划以后多用,所以做做笔记。

● 第一个头疼的问题
  模仿官方的例子搭建一个工程,居然死在不能访问首页上,折腾了两天才发现问题所在。
  在web.xml里配置:


[code="xml"]appServlet/

  spring-mvc配置文件里:


[code="xml"]

  然后访问首页,一直打不开,访问其它页面完全没问题。再做一个测试,加上一行配置:


[code="xml"]

  然后访问http://localhost:8080/a,很正常。但http://localhost:8080/就是不行。不管怎么google都找不到答案,郁闷了两天后突然发觉了问题:在web的根目录有一个index.html文件,删掉了就没事!

● 简化RequestMapping
  如何去掉每个方法头顶的RequestMapping(value="xxx")中的xxxx,因为一般都会与方法名相同,再写就多余了。像struts2的convention插件那样就挺好。Google了很久,别人也找不到答案

●事务问题
  在Controller中调用service层的方法访问数据库时,出现当前线程没有session的问题,很诡异,之前用struts2时很正常。在老外的论坛中找到一个解决方法:在DispatcherServlet的配置文件中添加。问题是解决了,但这个方法很奇怪,因为已经在applicationContext.xml中配置了tx。还不明白是怎么回事。
  后来找到解决方案。造成事务失效的原因是,mvc的配置文件先被处理,Service类此时还没有进行事务增强处理,所以不具备事务的能力,而轮到applicationContext.xml被处理时,已经被处理过的组件将被忽略。解决方法是,mvc的配置文件中不进行Service类的扫描:

[code="xml"]
<context:component-scan base-package="xx.xx">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>



后来发现,其实更好的方法是,既然同时用了spring和spring MVC,没必要搞出一个applicationContext.xml和一个spring-mvc.xml,应该统一,不要重复配置

●中文乱码问题
  直接用@ResponseBody输出字符串会有中文乱码出现,原因可Google到,其中一个解决方法是:在mvc的配置文件中添加以下配置(注意,必须添加在之前。并且,只添加StringHttpMessageConverter是不行的,那样输出json时会报错,所以只好也添加了MappingJacksonHttpMessageConverter,如果用到其它的Converter估计同样要添加。这不是一个好的解决办法。)

[code=&quot;xml&quot;] text/plain;charset=UTF-8application/json;charset=UTF-8

  目前比较好的方法可能就是修改源码并重新编译了,将StringHttpMessageConverter类中的Charset.forName(&quot;ISO-8859-1&quot;);修改为Charset.forName(&quot;utf-8&quot;);这样最保险,不会引起其它错误,只是编译源码有点麻烦。

● 配置异常处理


[code=&quot;xml&quot;]error/expectederror/unexpected


● 页面传入集合参数

[code=&quot;java&quot;]//: test/params?xxIds=2,3,4 或 test/param2?xxIds=2&amp;xxIds=3&amp;xxIds=4
@RequestMapping(&quot;/test/params&quot;)
public @ResponseBody String params(int[] xxIds){
for (int id: xxIds){
//....
}
return &quot;xxx&quot;;
}


● 页面传入bean

[code=&quot;java&quot;]//:test/bean?s1=abc&amp;s2=ddd&amp;i=45&amp;bool=1
@RequestMapping(&quot;/test/bean&quot;)
public @ResponseBody String bean(Bean bean){
return bean != null ? bean.toString() : &quot;null&quot;;
}


● 页面传入List和Map

[code=&quot;java&quot;]/*
List和Map不能直接传,必须绑定到某个对象上,而且,在url中指定参数时,格式有点怪异:List必须指定下标,格式为listName[i].prop=xx,Map的键也必须用中括号[],不能直接用点,格式为mapName[keyName]=value
*/


● 向页面传出json
记得添加相应的jackson依赖包,此外无需额外配置。

[code=&quot;java&quot;]//:test/json
@RequestMapping(&quot;/test/json&quot;)
public @ResponseBody Bean json(){
Bean bean = new Bean();
bean.setS1(&quot;abc&quot;);
bean.setS2(&quot;ddd&quot;);
return bean;
}


●hibernate代理对象的json转换
    用session.get(id)来取出非代理对象,而不要用session.load(id)来取出代理对象。

●让Controller接受日期参数
在Controller类中添加如下方法:

[code=&quot;java&quot;]@InitBinder
protected void initBinder(WebDataBinder binder){
  binder.registerCustomerEditor(Date.class, new PropertyEdiotrSupport(){
    public void setAsText(String value){
      setValue(new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;).parse(value));
    }
    public void getAsText(){
      return (new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;).format((Date)getValue()));
    }
  });
}
分享到:
评论

相关推荐

    spring MVC笔记

    spring MVC笔记spring MVC笔记spring MVC笔记spring MVC笔记

    spring mvc笔记

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建模型-视图-控制器(Model-View-Controller)架构的应用程序提供了强有力的支持。...文档和博客如《spring mvc笔记》可以帮助初学者更好地理解和应用这个框架。

    spring mvc 基础笔记 源代码

    spring mvc 基础笔记 源代码. 下载后倒入到eclipse当中。 请重新倒入Tomcat安装目录lib文件夹下的servlet-api.jar. 如果是jQuery.js文件有红色叉表示错误的话请无视。

    Spring MVC笔记.md

    将应用程序分为 Controller、Model、View 三层,Controller 接收客户端请求,调用 ...Spring MVC 就是对这套流程的封装,屏蔽了很多底层代码,开放出接口,让开发者可以更加轻松、便捷地完成基于 MVC 模式的 Web 开发。

    Spring MVC 学习笔记 九 json格式的输入和输出

    在这个学习笔记中,我们将深入探讨如何在Spring MVC中处理JSON格式的数据,包括输入和输出。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于前后端数据传输。 1. **JSON格式简介** ...

    Spring MVC 学习笔记 十二 PDF/Excel格式输出

    本学习笔记主要围绕Spring MVC的使用、配置和核心组件进行深入探讨,旨在帮助开发者更好地理解和掌握这一框架。 在Spring MVC中,Model代表业务逻辑和数据,View负责数据的展示,而Controller处理用户请求,协调...

    Spring MVC学习笔记MD.7z

    这个压缩包“Spring MVC学习笔记MD.7z”包含了作者在学习Spring MVC过程中的笔记、源代码以及相关文档,非常适合初学者或希望深入理解Spring MVC的开发者。 首先,`SpringMVC-Study.7z` 可能是作者整理的Spring MVC...

    Spring MVC 学习笔记

    以下是对Spring MVC学习笔记的详细解释: 1. **创建项目**: 创建Spring MVC项目通常从构建一个Maven工程开始。在命令行中使用Maven的`archetype:generate`命令创建一个JEE5的Web工程。在提供的例子中,使用了特定...

    spring mvc学习笔记

    ### Spring MVC 学习笔记 #### 一、Spring MVC 核心组件与工作流程 **Spring MVC** 是 **Spring Framework** 的一个重要模块,主要用于构建基于 Web 的应用程序。它提供了简化 Web 开发的一系列功能,包括但不限于...

    spring MVC学习笔记

    Spring MVC是Spring框架的一部分,用于构建Web应用程序的模型-视图-控制器(Model-View-Controller)实现。Spring MVC通过分离业务逻辑、数据模型和视图界面来简化Web应用程序的开发。开发者可以使用注解或XML配置的...

    SpringMVC狂神说最全笔记

    根据SpringMVC狂神说公众号做的笔记,把他做成了md方便大家阅读

    Spring MVC 学习笔记 一 创建项目

    **Spring MVC 学习笔记 一 创建项目** 在IT领域,Spring MVC是Java Web开发中的一个强大框架,它简化了构建交互式Web应用程序的过程。本笔记将深入探讨如何创建一个基本的Spring MVC项目,让我们开始吧。 首先,...

    Spring3.0MVC 实用教程(高淇)

    Spring 3.0 MVC 是一个用于构建 Web 应用程序的全功能模型-视图-控制器(MVC)框架,它是 Spring 框架的一个核心模块。Spring MVC 提供了一种可插拔的架构,允许开发者选择使用内置的 Spring Web 框架,或者与其他 ...

    Spring+MVC笔记.pdf

    Spring MVC是Spring框架的一部分,它是用于构建Web应用程序的一个模型-视图-控制器(Model-View-Controller,简称MVC)框架。Spring MVC的主要目的是将Web层的业务逻辑从表示层中分离出来,使得各个层次间的依赖性减少...

    Java EE 框架整合 开发入门到实战-Spring+Spring MVC+MyBatis微课版复习笔记

    Spring、Spring MVC和MyBatis是Java EE中最受欢迎的框架之一。这些框架的整合使用广泛用于构建企业级应用。下面将详细介绍这些框架的核心概念、模块组成、实例化Bean的方式以及依赖注入的机制和优势。 Spring框架...

    Spring MVC 复习笔记.rar

    **Spring MVC 概述** Spring MVC 是 Spring 框架的一部分,它是一个用于构建 Web 应用程序的轻量级、模型-视图-控制器(MVC)框架。Spring MVC 提供了处理 HTTP 请求和响应的机制,以及解耦业务逻辑和用户界面的...

Global site tag (gtag.js) - Google Analytics