发表于: 2017-01-07 11:19:04

2 1953


今天完成的事情:

1、解决controller中文乱码问题

2、用springmvc+mybatis进行数据库的增删改查操作

明天计划的事情:

1、待定

遇到的问题:

1、用springmvc+mybatis进行数据库增删改查,发送delete请求时要伪装成post请求,用到了jquery框架,遇到这么个问题,在jsp中引入jquery库,如果用官网jquery压缩版引用地址

可以正常进行删除操作,但是一旦在jsp中引入本地jquery库,就会报Request method 'GET' not supported错误,本以为是路径问题折腾了不少时间没解决,参考资料才了解到是spring拦截了所有请求,需要在springmvc.xml文件中加入两个标签:

收获:

1、解决控制台中文乱码问题,通过表单提交中文,在后台controller获得提交的中文参数打印到控制台显示乱码,参考文章分析应该属于jsp页面中文输入,到controller乱码这种情况,这时候需要在web.xml文件中添加一个编码的过滤器(filter)将编码统一为UTF-8,修改web.xml配置文件:

这里需要注意,修改后需要把tomcat重启一下才有效果,我起初没有重启一直不成功,耽误了不少时间。

另外,需要设置foreEncoding参数值为true,但我碰到的forceEncoding参数没设置也可以,其他情况就不一定了。

另另外,最好把这段代码放到web.xml中开头的位置,因为拦截有顺序,如果放在后面的话容易拦截不到,详细见底部链接。

2、spring mvc访问静态资源问题

对于静态资源来说,因为在web.xml中声明spring是拦截了所有请求,所以对于静态资源统统招收,拦截不误,但是显然我们没有与这个静态资源对应的映射,也就是说spring拦截下来了,却没有能力处理,这里有几种解决方案:

1)介绍在springmvc.xml中添加两个标签就能解决问题

  <mvc:default-servlet-handler/>

  <mvc:annotation-driven></mvc:annotation-driven>

  Default-servlet-handler将在SpringMVC上下文中定义一个DefaultServletHttpRequestHandler,它会对进入DispatcherServlet的请求进行筛查,如果发现是没有经过映射的请求,就将该请求交由WEB应用服务器默认的Servlet处理。如果不是静态资源的请求,才由DispatcherServlet继续处理。一般WEB应用服务器默认的Servlet的名称都是default,若所使用的WEB服务器的默认Serlvet名称不是default,则需要通过default-servlet-name属性显示指定。

2)关于使用spring mvc处理静态资源,比如html(发现之前的springmvc.xml中<property name = "suffix" value = ".jsp"></property>定义为jsp结尾就可以成功跳转,但是如果改为html并在web-inf下面新建了html文件后,并将suffix这里的".jsp"改为".html",无法跳转到想要的html页面,并且给出404错误,同时console给出错误信息为:No mapping found for HTTP request with URI [/springTest/WEB-INF/views/result.html] in DispatcherServ)

发现是需要让spring明确要处理静态资源

  <servlet-mapping>

     <servlet-name>springDispatcherServlet</servlet-name>

     <url-pattern>/</url-pattern>

  </servlet-mapping>

其匹配的都是controller中类似@RequestMapping("/helloworld")这样的注解配置的请求,而对于类似html/css/jpg等资源的访问就会得不到,所以需要在web.xml中加入需要访问的类型的支持,如:

  <servlet-mapping>

     <servlet-name>default</servlet-name>

     <url-pattern>*.jpg</url-pattern>

  </servlet-mapping>

同时Springmvc.xml配置文件中加入相应的:

  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

     <property name = "prefix" value="/WEB-INF/views/"></property>

     <property name = "suffix" value = ".jpg"></property>

  </bean>

彻底解决Spring MVC 中文乱码 问题 

学习SpringMVC——你们要的REST风格的CRUD来了



返回列表 返回列表
评论

    分享到