springMVC工作原理和创建简单实例
来源:互联网 发布:ubuntu 14.04 卸载kde 编辑:程序博客网 时间:2024/05/22 11:48
一:原理:
上面的是springMVC的工作原理图:
1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.
2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。
3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。
5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。
6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。
7、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。
二:创建工程
工具:eclipse
jdk:1.5以上
tomcat6
1,打开eclipse,右键新建工程,如下图所示,:
出现:
下一步---》finish.即可!
工程的机构大概如下:
2,我们都知道当http访问web工程服务时,会首先找到web.xml里面的内容。因此我们也应该首先填写web.xml中的配置。建好工程后会在WebContent/WEB-INF/目录下有web.xml文件。
<welocme-file>标签顾名思义就是欢迎页面。对应的页面有index.xml等6个页面。不过这6个页面工程没有给我们创建,因此需要我们手动创建。右击WebContent:
填写文件名--》next---》finish。新建一个index.jsp页面。
内容:
<%@ page language="java" contentType="text/html; charset=utf8" pageEncoding="utf8"%><!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><span style="color:red">初步搭建成功!!!!!!!!!</span></body></html>3,至此工程初步搭建成功,启动tomcat。在浏览器上输入:localhost:8080/springMVC2/
出现:
4,集成springMVC
首先还是配置web.xml文件,
4.1配置监听器
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener>4.2配置过滤器,解决post乱码
<filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param></filter>
<filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
4.3配置springmvc分发器,拦截所有请求
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>namespace</param-name> <param-value>dispatcher-servlet</param-value> </init-param></servlet><servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>4.4最后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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>springMVC</display-name> <welcome-file-list> <welcome-file>/WEB-INF/index.jsp</welcome-file> </welcome-file-list> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener><filter> <filter-name>encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param></filter><filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern></filter-mapping><servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>namespace</param-name> <param-value>dispatcher-servlet</param-value> </init-param></servlet><servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping></web-app>
说明:这里我们规定dispatcherServlet分发器关联的xml文件名是dispatcher-servlet。因此我们要在和web.xml文件同级别目录下创建一个dispatcher-servlet.xml文件。
5:
dispather-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:util="http://www.springframework.org/schema/util" 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/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!-- 开启注解模式驱动 --> <mvc:annotation-driven></mvc:annotation-driven> <!-- 扫包 --> <context:component-scan base-package="com.springmvc.*"></context:component-scan> <!-- 静态资源过滤 --> <mvc:resources location="/resources/" mapping="/resources/**"/> <!-- 视图渲染 jsp/freemaker/velocity--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 制定页面存放的路径 --> <property name="prefix" value="/WEB-INF/pages/"></property> <!-- 文件的后缀 --> <property name="suffix" value=".jsp"></property> </bean> </beans>
说明:当前端http请求经web.xml进入到dispathcer-servlet.xml后,开始读取此文件的配置,由上而下:
(1)扫描com.springmvc下面所有包的注解,如:@controller ,@Service ,@Autowired。会将这些注解携带的信息放到spring的bean工厂中。
(2)加载静态资源,比如,图片,css样式 ,js
(3)所有的视图界面,如以.jsp .html 比如刚才我们建的index.jsp文件。这里统一放在了/WEB-INF/pages/目录下 (下面建pages文件夹)
到此,也需要我们自己创建这些包和文件夹,com.springmvc下的包有controller,dao,service,三个包。
建好后的样子如下:
6,springmvc的bean工程配置:
右键WEB-INF创建applicationContext.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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd "></beans>
7,下面就要导入jar包了。jar包
jar包小包会房子百度网盘或后面会将工程上传到网上,jar结构大概如下。放在WEB-INF/lib文件夹下:
jar包复制到lib下后,再选中所有jar包,build path一下。
8,在com.springmvc.controller包下建个ViewController类
内容如下:
package com.springmvc.controller;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class ViewController { @RequestMapping("/view") public ModelAndView view(HttpServletRequest request){ ModelAndView mav = new ModelAndView(); String contextPath=request.getContextPath(); mav.addObject("context",contextPath); mav.setViewName("index"); return mav; }}说明:request.getContextPath()是获取工程根目录,通过modelAndView将根目录传到"index"页面(可以自己定义页面,在WEB-INF/pages/目录下)。
9,index.jsp页面
<%@ page language="java" contentType="text/html; 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>Insert title here</title></head><body><a href="http://blog.csdn.net/csdnliuxin123524"><span style="color:red">小编空间url</span></a><br/><!-- 第一种显示图片的方式,直接获取工程根目录 --><img alt="小编" src="<%=request.getContextPath() %>/resources/img/csdn2.png"><!-- 第二种显示图片的方式:从control层传来的工程根目录,加上图片的目录也可以显示 --><img alt="小编" src="${context}/resources/img/csdn2.png"></body></html>
${context}就是从后台传来的数据。
10,至此所有准备都做好了,下面可以启动tomcat了
浏览器网址输入:http://localhost:8080/springMVC2/view/
会显示以下页面:
到此,springMVC页面部署完成。
工程下载地址(包含jar包):百度网盘地址:链接:https://pan.baidu.com/s/1gfOV7Jd 密码:40v4
csdn下载地址:http://download.csdn.net/download/csdnliuxin123524/10001431
- springMVC工作原理和创建简单实例
- 初学SpringMVC的框架简单搭建以及工作原理实例
- Hibernate工作原理简单实例
- SpringMVC入门实例(解析工作原理)
- springMVC工作原理以及简单实现
- 【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)
- 【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)
- 【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)
- 【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)
- 【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)
- SpringMvc 及 Spring 工作原理和作用
- springMVC 的工作原理和机制、配置
- springMVC 的工作原理和机制
- springMVC 的工作原理和机制
- springMVC 的工作原理和机制
- SpringMVC 的工作原理和机制
- springMVC 的工作原理和机制
- springMVC 的工作原理和机制
- 装配Bean——隐式的bean发现机制和自动装配
- 这段时间就回顾下已经快被忘记的知识点吧,首先是关于死锁
- java中的几种IO读取方法
- c++笔记——MFC基础(暂存)
- 博客第一天,开启机器生活
- springMVC工作原理和创建简单实例
- GUI
- 抽象类----数据建模练习
- java学习第23天,给数组扩容
- Qt信号槽的高级应用1
- 计蒜客之简单斐波那契
- 刘汝佳--小学生算数
- 工作日记2017.09.28 cd的使用和路径,目录的相关知识
- HDU 5971 Wrestling Match(二分图着色)