SpringMVC原理及SpringMVC搭建详解
2017-09-12 20:02
417 查看
一. springMVC原理
springMVC的一个核心就是通过一个特殊的Servlet来拦截前端的请求,即DispatcherServlet。然后DispatcherServlet去询问handlerMapping由哪个Controller来处理该请求。接着,将请求发送给controller来处理,controller处理完成后会返回视图名称以及模型数据(可选)。接着,去询问ViewResolver该逻辑视图名对应的实际视图。接着将模型数据发送给实际视图,实际视图根据模型数据产生最终的页面。最后将页面返回给用户。
二.SpringMVC搭建
1.环境准备
1.1数据库环境:Mysql 5.51.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>
相关文章推荐
- Maven搭建SpringMVC+Hibernate项目详解
- JAVAWEB开发之SpringMVC详解(一)——SpringMVC的框架原理、架构简介、与mybatis整合和注解方式的使用、
- Maven搭建SpringMVC+Mybatis项目详解
- Maven搭建SpringMVC+Hibernate项目详解
- Maven搭建SpringMVC+Mybatis项目详解
- SpringMVC原理及配置详解
- Maven搭建SpringMVC+Mybatis项目详解
- Maven搭建SpringMVC+Mybatis项目详解
- Maven搭建SpringMVC项目详解
- Maven搭建SpringMVC+MyBatis项目详解
- Maven搭建SpringMVC+Mybatis项目详解
- Maven搭建SpringMVC+Mybatis项目详解
- Maven搭建SpringMVC+Mybatis项目详解【转】
- 【MVC - 参数原理】详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]
- Maven 搭建SpringMVC+Hibernate项目详解
- Maven搭建SpringMVC+Mybatis项目详解
- Maven搭建SpringMVC+Hibernate项目详解
- SpringMVC(3.2.4)搭建详解
- Android socket实现原理详解 服务端和客户端如何搭建
- Maven搭建SpringMVC+Hibernate项目详解