zoukankan      html  css  js  c++  java
  • MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下Spring MVC的一些使用心得。

    MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下Spring MVC的一些使用心得。

    之前的项目比较简单,多是用JSP 、Servlet + JDBC 直接搞定,在项目中尝试用 Struts(Struts MVC)+Spring+Hibernate, 严格按照分层概念驱动项目开发,因项目需求一直不断变化,功能不断扩充、增强,技术构建也几经改变到目前有个稳定的应用,体会了很多感受,这次先对 Spring MVC 层进行一些个人总结。

    MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,C(控制器)将V(视图、用户客户端)与M(模块,业务)分开构成了MVC ,这边不去讨论项目中是否应用MVC ,也不针对MVC的实现原理进行讲解,而是探讨实践中如何从应用SSH, 到Struts(Struts MVC)+Spring+Hibernate的演化过程。

    先看 Struts 如何与 Spring 结合处理一次简单的请求响应代码,前台可以设为用 AJAX 调用:

    1. 在 struts-config.xml 文件中加入

    <actionpath=" etpersonlist"="" scope="request" type="org.springframework.web.struts.DelegatingActionProxy">

    2.在 applicationContext.xml 文件中加入

    <!-- 指定GetPersonList处理的代码,和注入实现业务的代码 --><beanname="/GetPersonList" class="cn.base.GetPersonListAction"><propertyname="getPersonList" ref=" getPersonListServices"></property></bean>

    3.cn.base.GetPersonListAction 实现请求响应代码

    可以看出一次请求需求如此多的步骤,在加上一个项目下来有很多这样的请求响应,将给配置文件管理带来很大的麻烦。

    经过对 Spring 的深入应用, Spring 本身提供的 URL 请求控制,对其天然支持可以让我们不需要 applicationContext.xml 再次声明一次 URL 请求 Bean ,即减少了 Struts 的声明 URL ,达到减少些繁琐的配置。但只是少了一些而已,同样也会面临着配置文件的管理问题。

    Spring 注解将给我们的工作带来些轻松,利用反射机制原理出现的注解就是为了解决配置大量的配置问题。请看下处理一次简单的请求响应代码

    @Controller --声明控制器@RequestMapping("/person") –声明URL

    public class PersonControl extends BaseController {

    @Autowired –业务接口注入

    private personServices personServices;/*** 获得人员列表*

    @param request* @param response* @throws Exception*/@RequestMapping(params = "method=geList") --即处理/person.do? method=geList方法

    public void getnodeList(HttpServletRequest request,HttpServletResponse response) throws Exception { //处理请求//处理响应}}

    可以看出,在代码上加入注解可以省去我们上面说的多个配置文件的工作,达到简便的 MVC 处理请求响应。

    在配上简单的配置文件声明,即可轻松处理项目的全部请求控制工作。

    Spring MVC乱码问题

    在使用Spring MVC 做java Web 项目时,乱码问题时常都会出现,解决方法也不尽相同,有简单也有复杂的;如果加入了Spring框架之后就不一样了,可以采用Spring框架自带的过滤器CharacterEncodingFilter,这样可以大大减轻了我们的工作量,即简单方便又容易理解,配置方式如下:在web.xml文件中filter的位置加上如下内容:

    <filter>

    <filter-name>encodingFilter</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>

    <init-param>

    <param-name>forceEncoding</param-name>

    <param-value>true</param-value>

    </init-param>

    </filter>

    <filter-mapping>

    <filter-name>encodingFilter</filter-name>

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

    </filter-mapping>

    springmvc实现上传文件代码片段

    <?xml version="1.0" encoding="UTF-8"?>

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /></bean>

    @Controller@RequestMapping("/common")

    public class CommonController {

    @RequestMapping(value = "/upload")

    public @ResponseBody String upload(@RequestParam("file") MultipartFile file, HttpSession session) throws Exception {

    File localFile = new File("c:/test/a.rar");

    file.transferTo(localFile);

    return "success";

    }

    }

  • 相关阅读:
    1024. Palindromic Number (25)
    Android 它们的定义View
    Acdreamoj1116(Gao the string!)弦hash+二分法+矩阵高速功率
    Linux SVNserver建立
    JavaScript window.location物
    [D3] Reuse Transitions in D3 v4
    [D3] Animate Transitions in D3 v4
    [D3] Debug D3 v4 with Dev Tools
    [Angular] Custom directive Form validator
    [D3] Build an Area Chart with D3 v4
  • 原文地址:https://www.cnblogs.com/borter/p/9569741.html
Copyright © 2011-2022 走看看