您的位置:首页 > 编程语言 > Java开发

SpringMVC原理及SpringMVC搭建详解

2017-09-12 20:02 417 查看

一. 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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: