springmvc补充

来源:互联网 发布:赵氏孤儿知乎 编辑:程序博客网 时间:2024/06/05 00:32
  • 代码(Model方式)
  • 如果使用Model则可以不使用ModelAndView对象,Model对象可以向页面传递数据,View对象则可以使用String返回值替代。不管是Model还是ModelAndView,其本质都是使用Request对象向jsp传递数据

解决乱码问题

  • post
    在web.xml中加入:
<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>
  • 对于get请求中文参数出现乱码解决方法有两个:

修改tomcat配置文件(tomcat\apache-tomcat-7.0.42\conf\servlet.xml)添加编码与工程编码一致,如下:

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

另外一种方法对参数进行重新编码:

String userName new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码

绑定参数

  • 基本类型。也包括String
  • pojo类型
  • vo类型
    • 重新封装一个pojo类
    • jsp页面
    • controller

绑定数组

  • jsp页面
  • vo
  • controller
    public String controll( Vo vo ){
    …….}

绑定List

  • jsp
  • pojo

自定义转换器

  • 日期有很多格式,所以springmvc没办法把字符串转换成日期类型。所以需要自定义参数绑定。前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定。在springmvc这可以在处理器适配器上自定义Converter进行参数绑定。如果使用<mvc:annotation-driven/>可以在此标签上进行扩展。
  • 提交的表单中不要有日期类型的数据,否则会报400错误

自定义Converter类

public class DateConverter implements Converter<String, Date> {    @Override    public Date convert(String source) {        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        try {            return simpleDateFormat.parse(source);        } catch (ParseException e) {            e.printStackTrace();        }        return null;    }}

在springmvc.xml中配置

<!-- 加载注解驱动 -->    <mvc:annotation-driven conversion-service="conversionService"/>    <!-- 转换器配置 -->    <bean id="conversionService"        class="org.springframework.format.support.FormattingConversionServiceFactoryBean">        <property name="converters">            <set>                <bean class="cn.itcast.springmvc.convert.DateConverter"/>            </set>        </property>    </bean>

springmvc与struts2不同

  • springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。
  • springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
  • Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。

利用资源文件引入数据

  • 定义一个sourse.properties文件(key-value 形式)
  • 在springmvc.xml中配置
 <!-- 引入字典资源文件 --> <context:property-placeholder location="classpath:sourese.properties"/>
  • 在controller中
    通过这种方式,就可以把配置文件中的值赋给resourse.
@value("${文件中的key名称}")private String sourse
原创粉丝点击