SpringMVC原理及SpringMVC搭建详解

一. springMVC原理


        springMVC的一个核心就是通过一个特殊的Servlet来拦截前端的请求,即DispatcherServlet。然后DispatcherServlet去询问handlerMapping由哪个Controller来处理该请求。接着,将请求发送给controller来处理,controller处理完成后会返回视图名称以及模型数据(可选)。接着,去询问ViewResolver该逻辑视图名对应的实际视图。接着将模型数据发送给实际视图,实际视图根据模型数据产生最终的页面。最后将页面返回给用户。

二.SpringMVC搭建

1.环境准备

   1.1数据库环境:Mysql 5.5

    1.2java环境:jdk1.7   开发工具Myeclipse

    1.3Tomcat : v8.0

    1.4 springMVC版本:spring4.2.4(需要spring4.2.4所有包,一定包括spring-webmvc包,因为springmvc使用的就是这个包)

    1.4下载所需要的架包,下载地址:http://www.springsource.org/download


2.新建一个项目

   2.1




这样项目就新建成功了

2.2将架包拷贝到项目




3.配置前端控制器

3.1编写 web.xml

打开WebRoot/WEB-INF目录的时候,发现里面只有一个lib目录,这是存放各种jar包的地方。我们知道一个web项目必须要有一个web.xml文件才行

右键WEB-INF——>new——>file,新建一个web.xml文件。
 <servlet-name>springmvc</servlet-name>

 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

如下图:


4.配置处理器适配器

新建一个resource文件,与src文件同级,在resource文件中新建一个xml配置文件,这里我起名为spring-mvc.xml,然后在这个配置文件里面配置处理器适配器和映射器等。
新建resource文件方法如下:
File-->new-->other





接下来可以开始配置了

配置处理器适配器:
<!-- 非注解处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
<!-- 注解处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
    <!-- 配置注解扫描器 -->
<context:component-scan base-package="com.qyf.test.controller"/>

5.开发(编写)Handler(controller)

5.1注解方式的Handler(controller)

6.视图(jsp)的编写


7.配置处理器映射器

<!-- 非注解处理器映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"></bean>
 <!-- 注解处理器映射器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>

8.配置视图解析器

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
整个配置文件如下图:

9.项目部署调试

运行效果如下图:

10.代码文件

***web.xml***
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">            
<!-- 这是项目的名称 -->
<display-name>projectspringMVC</display-name>


<!-- 配置springMVC前端控制器 -->
 <servlet>
 <servlet-name>springmvc</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 
<!-- 配置加载的配置文件 -->
<init-param>  
    <param-name>contextConfigLocation</param-name>  
    <param-value>classpath:spring-mvc.xml</param-value>  
</init-param>
 </servlet>
 <servlet-mapping>
 <servlet-name>springmvc</servlet-name>
 <url-pattern>*.action</url-pattern>
 </servlet-mapping>
 
</web-app>
**********************************************************
***spring-mvc.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:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 配置处理器适配器 -->
<!-- 非注解处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean>
<!-- 注解处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
    <!-- 配置注解扫描器 -->
<context:component-scan base-package="com.qyf.test.controller"/>
<!-- 配置处理器映射器 -->
<!-- 非注解处理器映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"></bean>
    <!-- 注解处理器映射器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
</beans>
****************************************************************************
***mycontrollerZhujie.java****
package com.qyf.test.controller;
import java.util.ArrayList;
import java.util.List;
//import com.qyf.test.pojo.Activity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


//开发注解的handler类,使用@Controler来标识它是一个控制器
@Controller
@RequestMapping("/tests")
public class mycontrollerZhujie {
// 查询功能// @RequestMapping实现 对queryItems方法和url进行映射,一个方法对应一个url
@RequestMapping("/test")
public ModelAndView test() throws Exception {
// 调用Service查找数据库,查询商品列表,这里使用静态数据模拟
//List<Activity> itemsList = new ArrayList<Activity>();
// 向List中填充静态数据
//Activity items_1 = new Activity();
//items_1.setTitle("okokok");
//itemsList.add(items_1);
// 返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
//modelAndView.addObject("itemsList", itemsList);
// 指定视图
modelAndView.setViewName("/WEB-INF/jsp/test.jsp");
return modelAndView;
}
}
*********************************************************************
***test.jsp***
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'test.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->


  </head>
  
  <body>
    This is my JSP page. <br>
  </body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章