About Spring MVC

一、简介

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.

原文地址:https://www.cnblogs.com/wjk921/p/5333817.html