【SpringMVC】第一课 SpringMVC框架环境搭建以及使用

概念

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

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

Lifecycle for overriding binding, validation, etc,易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试。

它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架,对于初学者或者想了解mvc的人来说我觉得 spring是最好的,它的实现就是教科书!第二它和tapestry一样是一个纯正的servlet系统,这也是它和tapestry相比 struts所具有的优势。而且框架本身有代码,看起来容易理解。

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

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

项目环境的搭建以及访问流程

创建项目,在WEB-INF文件夹下新建lib文件夹,将jar包导入,并关联至项目

【SpringMVC】第一课 SpringMVC框架环境搭建以及使用_第1张图片

在项目中创建resources文件夹,将springMVC.xml文件导入其中,并转换成资源文件夹。

接在在项目的web.xml文件中配置一下代码,注册DispatcherServlet类,当浏览器访问服务器的时候,使用DispatcherServlet类设置的虚拟地址拦截监听所有访问请求地址。当DispatcherServlet类被访问后,通过生命周期的执行,首先创建对象,再执行init方法,加载init-param静态参数,执行springMVC.xml文件。




    
    
    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:springMVC.xml
        
    
    
    
        springmvc
        
        /
    

 使用请求转发方式跳转

接着我们在src文件夹中创建com.springmvc.controller包,新建OneController类继承至AbstractController抽象类,实现未实现的抽象方法

package com.springmvc.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 该类替代Servlet作为控制层
 */
public class OneController extends AbstractController {
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
        System.out.println("恭喜,你已经进入控制层了");
        //请求转发,携带数据跳转
        request.setAttribute("info","这是我第一个SpringMVC框架的项目");
        request.getRequestDispatcher("index").forward(request,response);
        return null;
    }
}

接着将该类的对象创建在springMVC.xml文件中




     
     

 
 

index.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>

  
    $Title$
  
  
  <%--使用EL表达式展示request对象中的数据--%>
  ${info}

  哈哈哈哈哈
  

 

使用重定向方式跳转

TwoController.java

package com.springmvc.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TwoController extends AbstractController {
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //使用重定向的方式跳转至index.jsp
        request.getSession().setAttribute("info","我是第二个控制器发送的数据");
        response.sendRedirect("index");
        return null;
    }
}

springMVC.xml中定义TwoController类的虚拟地址

 使用ModelAndView跳转

ThreeController.java

package com.springmvc.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ThreeController extends AbstractController {
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //ModelAndView: mode:模型,实体,存实体类,存数据  and和  view:视图,页面,界面
        //ModelAndView的作用等价于request对象的请求转发
        ModelAndView mav=new ModelAndView();
        //携带的数据
        mav.addObject("info",
                "我是第三个控制器使用ModelAndView对象跳转的页面");
        //要跳转的页面
        mav.setViewName("index");
        return mav;
    }
}

 

 springMVC.xml中定义ThreeController类的虚拟地址

通过name属性设置浏览器的访问地址,进行匹配,如果匹配正确,则开始执行自定义Controller类,在自定义Controller类的方法中,通过使用request或者response对象进行请求转发或者重定向的方式跳转页面至jsp页面,并且可以携带参数数据跳转,这里面的知识点是Jsp和Servlet的内容,本文中不再重复的赘述。

整个项目的访问流程如图所示:

【SpringMVC】第一课 SpringMVC框架环境搭建以及使用_第2张图片

在服务器项目中对浏览器隐藏静态页面代码

        在对于tomcat服务器的学习中,我们知道浏览器访问服务器项目,WEB-INF文件夹是对浏览器不可见的,因此在企业中我们常常把html的静态页面代码存储在WEB-INF文件夹中,从而增加项目的安全性。

        那么我们这里在WEB-INF文件夹中新建jsp文件夹,将index.jsp页面剪切至jsp文件夹中。那么因为WEB-INF文件夹对浏览器来说是不可见的,那么我们以上的TwoController类中使用重定向跳转页面的方式是不能实现的,因为重定向跳转属于浏览器跳转,而WEB-INF文件夹是对浏览器不可见的,不允许访问的。 

        同时因为我们的index.jsp文件从web文件夹中更换到了WEB-INF/jsp文件夹中,因此OneController和ThreeController中的index.jsp的路径应该更改为WEB-INF/jsp/index.jsp。

        但在企业中完成一个商业项目,需要很多页面,每一次访问页面都要访问这么长的相对路径,对于开发者来说比较冗余,那么在SpringMVC框架中给我们提供了观察者监听器可以在控制器跳转页面的过程中进行匹配前缀和后缀,使开发者在编写代码过程中减少冗余代码。

在springMVC.xml配置文件中定义如下代码:


        
        
        
        
    

但该操作只对ModelAndView的页面跳转方式有效,因此我们以上的三个控制器类中,请参照ThreeController类的写法,在跳转页面的同时,使用要指明要跳转的页面的文件的文件名即可。 

 

总结

SpringMVC框架是Spring框架的一部分,因此读者发现该框架的用基本都是Spring框架的jar包,但该框架中封装了jsp和servlet的技术,该框架基本的作用是在MVC三层架构中用于操作在controller控制层中的 ,运行项目的同时需要配置tomcat服务器才能启动服务器,使用浏览器地址进行访问。

你可能感兴趣的:(SSM框架技术,java,springMVC,MVC,controller,J2EE)