一、简介
1.Springmvc是什么
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
2. Springmvc 架构图
3.springmvc重要组件
1、DispacherServlet前端控制器
负责用户请求和响应,是一个中央控制器(调度),调用HandlerMapping查找Handler,调用HandlerAdapter处理器适配器执行Handler,调用ViewResolver视图解析器去解析视图,有了DispacherServlet有利于框架扩展,减少了各各组件之间耦合性。
2、HandlerMapping处理器映射器
不需要开发,使用框架提供的
负责查找Handler(常用action),通过xml配置方式或注解方式将Handler类和request请求Handler链接地址进行对应配置。
3、HandlerAdapter处理器适配器
不需要开发,使用框架提供的
Springmvc提供了很多种适配器,注解适配器支持注解开发、原始servlet适配器(HanderRequestAdapter)支持原始servlet的执行。
负责执行Handler,适配器是按照一定的规则去执行Handler,调用Handler返回的结果是ModelAndView,ModelAndView将Model和view封装起来(模型数据和视图)
4、ViewResolver视图解析器
不需要开发,使用框架提供的
负责进行视图解析,返回View,框架执行很多类型的View(jstlView、pdfView....)
5、Handler处理器(需要开发)
需要开发,按照适配器的规则开发,比如适配器要求Handler实现某个接口,Handler必须实现接口。
6、View视图页面(jsp) (需要开发)
需要开发,jsp+jstl。为了视图通用性建议使用第三方框架,jstl。
注:处理器映射器、处理器适配器、视图解析器称为springmvc的三大件
二、配置(入门示例)
Spring MVC环境搭建
1.导入jar包
2.web.xml的配置
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 7 <display-name></display-name> 8 9 <!-- 配置DispatcherServlet --> 10 <servlet> 11 <servlet-name>welcome</servlet-name> 12 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 13 <!-- <init-param> 14 <param-name>contextConfigLocation</param-name> 15 <param-value>/WEB-INF/Spring-Servlet.xml</param-value> 16 </init-param> --> 17 <!-- 程序启动时就加载 --> 18 <load-on-startup>1</load-on-startup> 19 </servlet> 20 <servlet-mapping> 21 <servlet-name>welcome</servlet-name> 22 <!-- 映射路径,所有的用户请求都会通过这个servlet进行处理 --> 23 <url-pattern>/</url-pattern> 24 </servlet-mapping> 25 26 <welcome-file-list> 27 <welcome-file>index.jsp</welcome-file> 28 </welcome-file-list> 29 </web-app>
3.welcome-servlet.xml配置
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" 5 xsi:schemaLocation=" 6 http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/mvc 9 http://www.springframework.org/schema/mvc/spring-mvc.xsd 10 http://www.springframework.org/schema/context 11 http://www.springframework.org/schema/context/spring-context.xsd"> 12 13 <!-- <context:component-scan base-package="org.springframework.samples.petclinic.web" 14 /> <context:component-scan base-package="cn.jbit.Controler"/> <mvc:annotation-driven/> --> 15 16 <!--处理器 --> 17 <bean name="/aa" class="cn.jbit.Controler.WelcomeControler" /> 18 <!-- ViewResolver 视图解析器 --> 19 <bean 20 class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 21 <property name="prefix" value="/WEB-INF/jsp/" /> 22 <property name="suffix" value=".jsp" /> 23 </bean> 24 </beans>
4.编写controller类
1 package cn.jbit.Controler; 2 3 import javax.servlet.http.HttpServletRequest; 4 import javax.servlet.http.HttpServletResponse; 5 6 import org.springframework.web.servlet.ModelAndView; 7 import org.springframework.web.servlet.mvc.AbstractController; 8 9 public class WelcomeControler extends AbstractController{ 10 11 @Override 12 protected ModelAndView handleRequestInternal(HttpServletRequest arg0, 13 HttpServletResponse arg1) throws Exception { 14 System.out.println("hello"); 15 return new ModelAndView("Welcome"); 16 } 17 18 }
5.jsp页面
1 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 8 <html> 9 <head> 10 <base href="<%=basePath%>"> 11 12 <title>My JSP 'index.jsp' starting page</title> 13 <meta http-equiv="pragma" content="no-cache"> 14 <meta http-equiv="cache-control" content="no-cache"> 15 <meta http-equiv="expires" content="0"> 16 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 17 <meta http-equiv="description" content="This is my page"> 18 <!-- 19 <link rel="stylesheet" type="text/css" href="styles.css"> 20 --> 21 </head> 22 23 <body> 24 welcome! <br> 25 </body> 26 </html>
最后将SpringMVC部署到tomcat服务器上 然后运行 在浏览器中输入访问地址 就可以看到前台显示jsp页面 后台打印字符串了
三、HTTP协议
1.HTTP 简介
HTTP(Hypertext Transfer Protocol,超文本传输协议①)是在万维网上进行通信时
所使用的协议方案。HTTP 有很多应用,但最著名的是用于Web 浏览器和Web 服
务器之间的双工通信。
2.HTTP报文
报文组成
起始行
报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说
明出现了什么情况。
首部字段
起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为
了便于解析,两者之间用冒号(:)来分隔。首部以一个空行结束。添加一个首
部字段和添加新行一样简单。
主体
空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括
了要发送给Web 服务器的数据;响应主体中装载了要返回给客户端的数据。起
始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意
的二进制数据(比如图片、视频、音轨、软件程序)。当然,主体中也可以包含
文本
3.请求实例
一些常见的HTTP方法
GET 从服务器向客户端发送命名资源
PUT 将来自客户端的数据存储到一个命名的服务器资源中去
DELETE 从服务器中删除命名资源
POST 将客户端数据发送到一个服务器网关应用程序
HEAD 仅发送命名资源响应中的HTTP 首部
四、注解
@Controller注解 @Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示
@RequestMapping注解 @RequestMapping可以用在类定义和方法定义上,它标明这个类或方法与哪一个客户请求对应
如下示例:
1 @Controller 2 public class HelloControler { 3 4 @RequestMapping(value = "/hello") 5 public String hello(String username, Model model) { 6 System.out.println("欢迎"+username); 7 model.addAttribute("username",username); 8 return "Welcome"; 9 } 10
为了使注解生效 还需要在xml中进行配置,代码如下:
1 <context:component-scan base-package="cn.jbit.Controler" /> 2 <mvc:annotation-driven />
最后再重新运行项目 测试一下就行了
END.