zoukankan      html  css  js  c++  java
  • Spring MVC入门实战(一)

       本文主要把一个菜鸟从“只是听说过Spring MVC”到“可以手动创建并运行一个Spring MVC工程”的过程记录下来,供以后复习。

    0. 开发环境准备

      计算机平台:Windows 7 X64。

      需要准备的软件和相关库包括:JDK8(jdk-8u74-windows-x64)、Eclipse(eclipse-jee-mars-2-win32-x86_64)、Tomcat(apache-tomcat-7.0.68-windows-x64)、Spring(spring-framework-4.2.5.RELEASE-dist)、Logging(commons-logging-1.2-bin)、Jstl(jakarta-taglibs-standard-1.1.2)。

    1. 软件安装

      JDK8

      安装到系统。安装完成后添加系统环境变量:JAVA_HOME(D:Program FilesJavajdk1.8.0_74)、CLASS_PATH(.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar)。如果在cmd中运行“java -version”提示找不到java命令,那么就在PATH环境变量中增加:%JAVA_HOME%in;

      Tomcat

      选择安装包自动安装或者是硬盘解压后运行自带注册脚本均可。然后添加系统环境变量:CATALINA_HOME(D:Program FilesJavaapache-tomcat-7.0.68)

      Eclipse

      直接解压到硬盘即可。

      配置一下Tomcat服务器方便以后调试:Window -> Preferences -> Server -> Runtime Environment,选择Add弹出“New Server Runtime Enrionment”对话框,选择对应的版本下一步配置Tomcat的根目录最后“Finish”,这样就完成了Eclipse与Tomcat的整合。

      配置一下Eclipse编辑器自动提示功能:Window -> Preferences -> Java -> Editor -> Content Assist 中将Auto Activation中的延时设置为200ms,提示符改为“.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”。

      Spring、Logging、Jstl

      这三个都是以jar包的形式进行应用的,解压出来找到jar包提取出来可以分别放置或混合在一起。在Eclipse中,可以Window -> Preferences -> Java -> Build Path -> User Libraries 将这些依赖库整理在一起,这样有个好处就是在工程应用的时候可以直接添加User Library引用,目录就变得很清晰明了。

    2. 创建工程

      2.1、打开Eclipse,选择File -> New -> Dynamic Web Project(或者Other中选择),指定工程名之后再下一步,记得勾上“Generate web.xml deployment descriptor”自动生成一个web.xml配置文件。

      2.2、右键工程名,选择Properties -> Java Build Path -> Libraries,选择“Add Library” -> User Library 把自己上面制定的自定义库加载进来。

      2.3、将Spring、Jstl、Logging库拷贝到WEB-INF/lib目录

      为什么加载了依赖库,还要讲库文件拷贝到lib目录呢?原因是在于Web工程是需要在Tomcat中运行的,依赖库只能保证编译成功,却不会自动将依赖库拷贝到Tomcat运行目录下,那么网站也就不能正常访问了!Spring目录中其实有很多jar包是不需要的,不过暂时搞不清楚哪些可以不拷贝,所以干脆都拷贝过去算了。另外就是加上commons-logging-1.2.jarjstl.jarstandard.jar辅助依赖库。

      2.4、配置web.XML文件

      在web.xml文件中添加如下配置信息:

      <servlet>
          <servlet-name>SpringMVC</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>SpringMVC</servlet-name>
          <url-pattern>/</url-pattern>
      </servlet-mapping>

       其中<servlet>定义了一个名为SpringMVC的servlet引入了Spring类,load-on-startup表示工程启动时自动加载。在<servlet-mapping>中url-pattern是用来定义哪些请求需要交给Spring框架进行处理的,“/”表示所有请求,比如说“*.html”就表示所有的html页面请求。

      页面请求交给Spring MVC处理后,Spring MVC默认会加载WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml 配置文件。例如本例中的SpringMVC-servlet.xml。

      2.5、配置SpringMVC-servlet.xml

      首先直接给出该文件的配置内容,然后再解释一下里面配置的含义:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"    
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"    
        xmlns:context="http://www.springframework.org/schema/context"    
        xmlns:mvc="http://www.springframework.org/schema/mvc"    
        xsi:schemaLocation="     
               http://www.springframework.org/schema/beans     
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     
               http://www.springframework.org/schema/context     
               http://www.springframework.org/schema/context/spring-context-3.0.xsd    
               http://www.springframework.org/schema/mvc     
               http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 
        
        <!-- HandlerMapping -->  
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
           
        <!-- HandlerAdapter -->  
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 
    
        <!-- 处理器 -->
        <bean name="/xiaoku" class="com.springmvc.xiaoku.HelloWorldController" /> 
         
        <!-- ViewResolver --> 
        <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
            <property name="prefix" value="/WEB-INF/jsp/"/> 
            <property name="suffix" value=".jsp"/> 
        </bean>
         
    </beans>

      主要是配置在于:

      (1)HandlerMapping是处理器的映射器。BeanNameUrlHandlerMapping表示将URL和Bean的名字进行匹配,例如URL为“上下文/xiaoku”则Spring配置文件中必须有一个“/xiaoku”的Bean,上下文忽略。可以看到后面确实有一个Bean名字为“/xiaoku”,对应的类就是我们自己写的HelloWorldController。

      (2)HandlerAdapter是处理器的适配器。SimpleControllerHandlerAdapter表示所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean可以作为Spring Web MVC中的处理器。如果需要其他类型的处理器可以通过实现HadlerAdapter来解决。

      (3)ViewResolver是视图解释器。InternalResourceViewResolver用于支持Servlet、Jsp的解析;viewClass设置为JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar包;其中prefix和suffix分别表示视图页面的前缀和后缀,访问格式就是“prefix[视图名称].suffix”,例如视图名为xiaoku,那么上面配置指定的访问路径就是“/WEB-INF/jsp/xiaoku.jsp”。

      2.6、创建一个Controller

      我们的Model层就是Spring MVC框架,这一步我们把Controller层定义一下。

    package com.springmvc.xiaoku;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    public class HelloWorldController implements Controller{
    
        @Override
        public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
            ModelAndView mv = new ModelAndView();
            mv.addObject("message", "Hello, my first spring mvc!");
            mv.setViewName("xiaoku");
            return mv;
        }
        
    }

      这里的HelloWorldController必须继承org.springframework.web.servlet.mvc.Controller,当有也有其他Controller以后再学习。Eclipse编程方便就在于自动提示必须重载的函数接口,ModelAndView包含了视图要实现的模型数据和逻辑视图名,可以添加任意POJO对象。

      回头看看那个SpringMVC-servlet.xml,其实里面名为“/name”的Bean指向的Class就是这一步创建的Class,实际上是设计好了再回头配置一下。

      2.7、设计一个简单的Jsp页面

      上面已经说了视图名为xiaoku,那么就创建一个名为xiaoku.jsp的页面文件,其实Eclipse自动生成的jsp文件就包含了大部分的内容,只需要增加一句话打印一下message(由Controller层传递过来的)信息即可,完整代码如下:

    <%@ 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=ISO-8859-1">
    <title>My first jsp page</title>
    </head>
    <body>
    第一条信息:${message}
    </body>
    </html>

       2.8、运行工程

      配置完成的工程状态如下:

      可以选择启动工程调试,或者启动Tomcat服务器,通过浏览器访问:http://localhost:8080/FirstSpringMVC/xiaoku 就可以看到页面效果了!从我实践的效果来看,主要可能出错的地方在于自定义视图名称、Controller名称、Bean名称三者要一致。

    总结:

      1、环境的搭建要细心,JDK、Eclipse、Tomcat安装要正确,环境变量要设置好;

      2、使用Spring、CommonLogging、Jstl库的时候要在工程依赖中加一下,还要在工程lib目录下拷贝一份,这样就不会出现“Class not found”的问题了;

      3、使用Spring MVC主要是:配置“web.xml”将访问处理引导给Spring;配置“工程名-servlet.xml”给Spring提供配置信息;定义自己的Controller类处理页面逻辑;制作自己的Jsp页面显示文件;

      4、从这个简单的入门例子中可以看出,Spring框架做简单的网站显得很繁琐,但是开发任务的层次划分的很清晰,每一层的任务耦合性比较低,要是开发大型的网站就方便系统设计和多人协作了。

  • 相关阅读:
    30个实例详解TOP命令
    CentOS6 启动流程图文解剖
    Linux常用性能检测命令解释
    Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity) 转
    linux系统中如何查看日志 (常用命令2)
    Linux下常用的shell命令记录1
    python import as from
    内存的大小端模式
    opencv笔记1
    代码不仅仅考虑性能
  • 原文地址:https://www.cnblogs.com/kuliuheng/p/5247448.html
Copyright © 2011-2022 走看看