• 框架-Java:Spring MVC


    ylbtech-框架-Java:Spring MVC

    Spring MVC属于SpringFrameWork的后续产品已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2(一般老项目使用)等。

    1.返回顶部
    1、

    框架

    通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、VelocityTilesiText和POI。Spring MVC 框架并不知道使用的视图,所以不会强迫开发者只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。
     

    优点

    Lifecycle for overriding binding, validation, etc,易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试
    它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架,对于初学者或者想了解mvc的人来说我觉得 spring是最好的,它的实现就是教科书!第二它和tapestry一样是一个纯正的servlet系统,这也是它和tapestry相比 struts所具有的优势。而且框架本身有代码,看起来容易理解。
     

    单元测试

    关于Spring MVC Controller 层的单元测试
    测试准备工作:
    1、搭建测试Web环境
    @RunWith(UnitilsJUnit4TestClassRunner.class)
    @SpringApplicationContext({
    "classpath:*.xml","file:src/main/webapp/WEB-INF/spring-configuration/*.xml",
    "file:src/main/webapp/WEB-INF/*.xml"
    })
    2、注入Controller 类
    @Controller
    BeanControllercontroller;
    3、编写测试数据
    测试数据的文件名一定要与测试类的文件名相同,比如测试数据BeanControllerTest.xml ,测试类 BeanControllerTest。
    4、注入测试数据
    @Test
    @DataSet
    public void testBean(){}

    常用注释

    MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下Spring MVC的一些使用心得。
    之前的项目比较简单,多是用JSP 、Servlet + JDBC 直接搞定,在项目中尝试用 Struts(Struts MVC)+Spring+Hibernate,严格按照分层概念驱动项目开发,因项目需求一直不断变化,功能不断扩充、增强,技术构建也几经改变到目前有个稳定的应用,体会了很多感受,这次先对 Spring MVC 层进行一些个人总结。
    MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,C(控制器)将V(视图、用户客户端)与M(javaBean:封装数据)分开构成了MVC ,这边不去讨论项目中是否应用MVC ,也不针对MVC的实现原理进行讲解,而是探讨实践中如何从应用SSH, 到Struts(Struts MVC)+Spring+Hibernate的演化过程。
    先看 Struts 如何与 Spring 结合处理一次简单的请求响应代码,前台可以设为用 AJAX 调用:
    1. 在 struts-config.xml 文件中加入
    <!--用于声明GetPersonList。do请求委托Spring处理--><action path="/GetPersonList" scope="request"type="org.springframework.web.struts.DelegatingActionProxy"></action>
    2.在 applicationContext.xml 文件中加入
    <!-- 指定GetPersonList处理的代码,和注入实现业务的代码 --><bean name="/GetPersonList" class="cn.base.GetPersonListAction"><property name="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";
    }
    }
    2、
    2.返回顶部
     
    3.返回顶部
     
    4.返回顶部
     
    5.返回顶部
    0、
    0.1、
    1、
    2、
     
    6.返回顶部
     
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    python人工智能——机器学习——分类算法k近邻算法——kaggle案例: Facebook V: Predicting Check Ins
    python人工智能——机器学习——分类算法k近邻算法——kaggle案例: Facebook V: Predicting Check Ins
    python人工智能——机器学习——分类算法k近邻算法——kaggle案例: Facebook V: Predicting Check Ins
    js刷新当前页面的5种方式
    再谈Jquery Ajax方法传递到action
    再谈Jquery Ajax方法传递到action
    ContentType是什么意思?
    ContentType是什么意思?
    POST提交数据之ContentType的理解;
    POST提交数据之ContentType的理解;
  • 原文地址:https://www.cnblogs.com/storebook/p/9707177.html
Copyright © 2020-2023  润新知