SpringMVC+ mybatis 企业级开发实战连载(一)

1. 开发第一个 Spring MVC应用

(1) Spring的下载和安装

     spring是一个独立的框架,它不需要依赖于任何 Web服务器或容器。它既可在独立的 Java sE项目中使用, 也可以在 Java web项目中使用。 下面首先介绍如何为 Java项目和 Java Web  项目添加 Spnng支持。

     下载和安装 Spring框架可按如下步骤进行:

     a. 登录 http://repo.springsource.org/libs-release-local/站点,该页面显示一个目录列表,沿着 org→springfiramework→spring路径进入, 即可看到 spring框架各版本的压缩包的下载链接. 下载 Spring的最新稳定版4.2.0,下载完成,得到一个 spring-framework-4.2.0.RELEAsE_dist.zip压缩文件,解压该压缩文件得到一个名为 spring-framework-4.2.0.RELEASE的文件夹, 该文件夹下有如下几个子文件:

              doos。该文件夹下存放Spring的相关文档,包含开发指南、 API参考文档。

              libS。该文件夹下的JAR 分为三类:

                       ①Spring框架 class文件的 JAR包;

                       ②spring框架源文件的压缩包, 文件名以一source结尾; 

                       ③Spring框架API文档的压缩包, 文件名以-javadoc结尾。

               schemas。该文件夹下包含了 Spring各种配置文件的 xML schema文档。

               readme.txt、 notice.txt、license.txt等说明性文档。

             b. 将1ibs文件夹下所需模块的 class文件的 JAR 包复制添加到项目的类加载路径中, 既可通过添加环境变量的方式来添加,也可使用Ant或 IDE工具来管理应用程序的类加载路径. 如果需要发布该应用,则将这些 JAR 包一同发布即可。如果没有太多要求,建议将libs文件夹下所有模块的 class文件的 JAR 包添加进去.

            c.除此之外, Spring的核心容器必须依赖于 common_1ogging的 JAR包,因此还应该登录 http://commons.apache.org/站点,  沿着 Releases→Logging路径进入,  下载最新的commons-logging工具,下载完成得到一个 commons_1ogging_1.2_bin.zip压缩文件,将该文件解压路径下的 commons-1ogging-1.2.jar也添加到项目的类加载路径中 。

             完成上面4个步骤后, 接下来即可在 Java Web应用中使用 spring Mvc框架了 。

(2) Spring MVC的 DispatcherServlet

            在许多的 MVC框架中,  都包含一个用子调度控制的 Servlet。 spring Mvc也提供了一个名为 org.springframework.web.servlet.DispatcherServlet的 servlet充当前端控制器, 所有的请求驱动都 将围绕这个 Dispatcherservlet来分派请求 。

                       DispatcherServlet是一一个 Servlet(它继承自 HttpServlet基类), 因此使用时需要把它配置在 Web应用的部著描述符 web.xm1文件当中,  配置信息如下:

                      

 <servlet>
<! - Servlet的名称一一>   
<serv1et-name>spri]lgmvc</servlet-name>
<!一一 Servle-t对应的 java类一一>
<servlet-class>
org. springframework. web. servlet. DispataherServlet   
</servlet-class>   
<!一当前 Servlet的参数信息一一>
<init-param>    
<!-- contextConfigLocation是参数名称,该参数的值包含 springMvc的配置文件路径一一>
<param-name>oontextConfigLocation</param-nane>
<param-value>/WEB-1NF/springm1va-config. xm1</param-va1ue> 
</init-param>
 <!一在Web应用启动时立即加载servlet-> 
<1oad-on-startup>1</1oad-on-star.tup>   
</serv1et>   
<!- Servlet映射声明一一>     
<servlet-mapping>       
<!-一清求对应的 servlet的名称一一>
<servlet-name>springmvc</servlet-name>
<!-一监听当前域的所有请求一一>
<ur1-pattern>/</ur1-pattern>
</servlet-mapping>
    以上是标准 Java EE servlet的配置,配置了一个 DispatcherServlet,该 Servlet在 Web应用程序启动时立即加载, Dispatcherservlet加载时会需要一个 Spring MVC的配置文件,默认情况下, 应用会去应用程序文件夹的 wEB-INF下査找对应的[servlet- name]-servlet.xml文件, 例如本例的<servlet_name>是 springmvc, 默认査找的就是/WEB-INF/springmvc-servletxml。

      也可以把 spring Mvc的西i置文件放到应用程序文件9t中的任何地方,用 servlet元素的injt_param子元素进行描述,本例的 param_name元素的值 contextConfigLocation表示参数名称, param_value元素的值/wEB_INF/springmvc_config.xm1则表示 Spring MVC的配置文件路径和名称。则 Dispatcheiservlet会査找/WEB_INF/springmvc-config.xm1文件,作为 Spring MVC的配置文件, 解.1;-T该文件内容并根据文件配置信息创建一个 WebAppucationContext 容器对象, 也称为上下文环境。 webApplicationContext i1表承自 ApplicationConte.xt容器,它的初始化方式和BeanFactory、 Applicationcontext有所区别,因为 WebApplicationContext需要 ServletContextetCOnteXt 实例, 也就是说, 它必须在拥有 web容器的前提 下才能完成启动 SpringWeb应用上下文的工作。应用上下文的工作。有了 webApplicationcontext容器, 开发者就可以很自然地使用 Spring的IOC,AOP等其他功能。

(3) 基于 ControIIer接口的控制

Dispatcherservlet在 spring当中充当一个前端控制器的角色, 它的核心功能是分发请求。 请求会被分发给对应处理的 Java类, spring MVC中称为Handle。在 Spring2.5版本以前,开请求会被分发给对应处理的 Java类, spring MVC中称为Handle。在 Spring2.5版本以前,开发_一个 Handle 的唯一方法是实现 org.springframework.web.servlet.mvc.Contro11er接口 。contro11er接口必须实现一个方法, 该方法的签名如下:

ModelAndvjew handleRequest(HttpServletRequest request,HttpservletResponse response) throws Exception

contro11er接口的实現类可以通过 handleRequest方法传递的参数访问对应请求的HttpservletRequest和 HttpservletResponse对象,处理完业务请求之后,必须返回一个包含模型对象和视图路径的 ModelAndView对象 。

接下来我们演示一个基于 contro11er接口的 Spring MVC控制器的 Web应用,以便展示Spring MVC是如何工作的 。

示例:  第一个 Spring MVC应用

        1.增加 Spring的支持

         首先,使用 Eclipse新建一个 Dynamic Web Project,也就是新建一个动态 Web项目,命名为 SpringMVCTest。

        为了让 web应用具有 spring支持的功能, 将 spring-framework-4.2.0.RELEASE解压文件夹下的1ibs文件夹下所有 Spring框架的 class文件的 JAR包和 spring所依赖的 commons_ 1ogging-1.2jar 复制到 Web应用的1ib文件夹下,也就是 SpringMVCTestWebcontent\wEB_INF\ 1ib路径下。

       返回 Eclipse主界面,此时在 Eclipse主界面的左上角资源导航树中会看到 springMvcTest 节点, 选中该节点, 然后按 F5键, 将看到 Eclipse主界面的左上角资源导航树中出现如图:


 即表明该 Web应用已经加入了 Spring的必需类库。但还需要修改 web.xml文件, 让该文件负责加载 spring框架。   

             2.配置前端控制器 DispatcherServlet

               单击 web.xml文件节点,编辑该文件, 配置 SpringMVC的前端控制器 Dispatcherservlet配置信息如下:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"   
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee   
    http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"   
    id="WebApp_ID" version="3.1">  
    <!-- 定义Spring MVC的前端控制器 -->  
  <servlet>  
    <servlet-name>springmvc</servlet-name>  
    <servlet-class>  
        org.springframework.web.servlet.DispatcherServlet  
    </servlet-class>  
    <init-param>  
      <param-name>contextConfigLocation</param-name>  
      <param-value>/WEB-INF/springmvc-config.xml</param-value>  
    </init-param>  
    <load-on-startup>1</load-on-startup>  
  </servlet>  
  <!-- 让Spring MVC的前端控制器拦截所有请求 -->  
  <servlet-mapping>  
    <servlet-name>springmvc</servlet-name>  
    <url-pattern>/</url-pattern>  
  </servlet-mapping>  
</web-app>  

web.xml文件的内容告诉 web容器,将使用 Spring MVC的 DispatcherServlet,并通过配置 ur1_pattem元素的值为“/”,将所有的URL映射到该 Servlet。

3.配置Spring MVC的 Controller

在WEB-INF下新建springmvc-config.xml文件


下来是 spring MVC的配置文件, 配置信息如下:

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xsi:schemaLocation="  
        http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd  ">  
          
    <!--配置handler,映射"/hello"请求   -->  
     <bean name="/hello" class="org.fkit.controller.HelloController"/>
      
    <!-- 配置处理映射器 -->  
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>  
       
     <!-- 配置处理器适配器-->  
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>  
  
  
<!-- 视图解析器 -->  
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>  

</beans>  

4. Controller类的实现

在src目录下新建类HelloController


HelloController类实现了 Controller接口, 用来处理/hello请求。 示例代码如下:

package org.fkit.controller;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

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


/**  
 *  HelloController是一个基于注解的控制器,  
 *  可以同时处理多个请求动作,并且无须实现任何接口。  
 *  org.springframework.stereotype.Controller注解用于指示该类是一个控制器  
 */  

public class HelloController implements Controller{  
  
     private static final Log logger = LogFactory  
                .getLog(HelloController.class);

	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		// TODO Auto-generated method stub
		 logger.info("hello方法 被调用");  
         // 创建准备返回的ModelAndView对象,该对象通常包含了返回视图的路径、模型的名称以及模型对象  
         ModelAndView mv = new ModelAndView();  
         //添加模型数据 可以是任意的POJO对象    
         mv.addObject("message", "Hello World!");    
         // 设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面    
         mv.setViewName("/WEB-INF/content/welcome.jsp");   
        // 返回ModelAndView对象。  
        return mv;  
		
	}  
       
   

}

 5. View页面

在WEB-INF下新建content目录,在content目录下新建welcome.jsp:


springMVCTest包含一个视图页面welcome.jsp,用来显示欢迎信息,内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"  
    pageEncoding="UTF-8"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>welcome</title>  
</head>  
<body>  
<!-- 页面可以访问Controller传递传递出来的message -->  
${requestScope.message}  
</body>  
</html>  

此处jsp使用了EL表达式来简化页面开发.


6.测试应用

使用Eclipse部署springMVCTest这个 web应用,在浏览器输入URL来测试应用:

http://localhost:8080/SpringMVCTest/hello

看到以下结果表示显示成功:



            

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值