一个简单的Springmvc应用开发例子

        SpringMVC应用的配置步骤:
        1,将所有的jar包导入到lib文件夹下;
            jar在spring框架包-->libs-->所有的RELEASEjar包;
        2,先配置一个DispatcherServlet前端控制器;
            这个控制器实质上是一个web.xml文件,在里面配置内容包括
   
<?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">
  <servlet>
    <servlet-name>SpringMVCTest1</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>
  <servlet-mapping>
    <servlet-name>SpringMVCTest1</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

  

        3,配置完前端控制器之后,接下来的步骤看你是打算用xml文件配置,还是用注解的方式了,在Spring2.5之后,都是推行:约定优于配置;
        先讲xml配置文件的方法:
        其实,不管是哪一个,你都需要一个配置文件:springmvc-config.xml,在xml配置文件方法中,你需要在这个配置文件中配置handle,映射/hello请求;其实通俗地讲就是要给你等一下输网址的时候的最后那个请求,配置好这个请求的映射关系,当接收到这个请求之后,系统知道要调用哪个Controller来处理;下面这个是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"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd">
    <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.spirngframework.web.serlvet.view.InternalResourceViewResolver"/>
</beans>

  


 
        实际上这个springmvc-config就相当于一个桥梁,连接起了前端的请求和后台要处理的Controller之间的联系;
        4,那么接下来,我们就要正式开始写controller了,也就是后台具体的业务逻辑;
            在前面的<bean name = "/hello" class = "org.fkit.controller.HelloController"/>中我们已经写出了这个HelloController控制器的路径了,记得要前后一致,不然这个”springmvc-config桥梁“就显得毫无意义了;
            其中,用xml配置方法和注解方法也是有所不同的,xml配置方法主要是使用接口的方式,代码如下;
 
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;
 
public class HelloController implements Controller{
    private static final Log logger = LogFactory.getLog(HelloController.class);
    @Override
    public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response){
        logger.info("handleRequest被调用");
        ModelAndView mv = new ModelAndView();
        //添加模型数据,可以是任意的POJO对象
        mv.addObject("message","Hello World");
        //设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
        mv.setViewName("/WEB-INF/content/welcome.jsp");
        //返回ModelAndView对象
        return mv;
    }
}

  

        5,这个Controller控制器在接受到请求之后,做了相关处理之后,要将数据返回到视图中,使用了SpringMVC专有的ModelAndView数据传输模型,所以接下来,我们还要建一个jsp页面来接收Controller发送过来的模型数据。并用显示逻辑显示出来;
            这里要提一下,所有的jsp页面都是放在WEB-INF/content目录下,这样做可以避免用户直接访问jsp页面。做到SpringMVC的非侵入性;下面是welcome.jsp的代码;
 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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>Insert title here</title>
</head>
<body>
    ${requestScope.message}
</body>
</html>

  

 
              这里还用到了一点EL表达式的内容,关于EL表达式无法在jsp页面中正常使用的问题,请自行百度哟。。。
        6,测试应用;
              做了这么多,哔哔了这么多,当然要测试一下来看看对不对啦。。
              输入网址:http://localhost:8080/SpringMVCTest/hello 即可,注意到这里更以前不同的地方在于不需要写.jsp文件后缀了。因为这只是一个请求而已;  
         好的,以上就是xml配置文件方法的SpringMVC应用的开发步骤;下面要讲的是通过注解的方式来开发的步骤;
         这里要提一点,其实这两种不同的方式也是Spring的一大特色,而SpringMVC也是Spring的一部分;所以个人建议在学习SpringMVC之前可以先去学学Spring,当然了,Spring作为一个经老不衰的框架,所接触的只是皮毛而已;个人而言;
         跟xml配置方法相比,需要改动的步骤有两个部分,一个是桥梁spingmvc-config,另一个是Controller控制器;其他的步骤都是一样的;
         springmvc-config.xml文件的改动,我们现在已经不再是通过xml配置的方式来寻找Controller了,而是通过扫描的方式来寻找Controller,如果说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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <context:component-scan base-package = "org.fkit.controller"/>
    <bean class = "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <bean class = "org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
    <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver"/>
 
 
</beans>

  

 
 
        少了一个<bean name = "/hello" class = "org.fkit.controller.HelloController"/>,而多了一个路径扫描,而且引进了另外两个依赖约束mvc和context,看上去好像更麻烦了,但是从软件工程化的角度来看,这样更加灵活便利;因为你不用再每写一个控制器就来这边写一个xml配置路径了;
        接下来是Controller控制器的改变了, 我们要通过注解方式给控制器注解一个辨识,这样的话,才能让springmvc-config扫描到;
        上代码;
package org.fkit.controller;
 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
 
@Controller
public class HelloController{
    private static final Log logger = LogFactory.getLog(HelloController.class);
    @RequestMapping("/hello")
    public ModelAndView hello(){
        logger.info("hello方法被调用");
        ModelAndView mv = new ModelAndView();
        mv.addObject("message","Hello World");
        mv.setViewName("/WEB-INF/content/welcome.jsp");
        return mv;
    }
}

  

        其中,@Controller是标注在这个Controller类里面,证明他是个Controller,然后springmvc-config会进来扫描这里面是否有@RequestMapping("***")标识,如果有的话,又是属于哪一个的,这样一直不停的寻找。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/zxx123/p/8464924.html