• 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.

  • 相关阅读:
    [技术][RIA]<<Silverlight2完美征程>> 李会军
    HTML5+CSS3 W3C规范<<中文版>>参考手册(提供下载)
    爱情四十五课,别唱独角戏
    爱情四十八课,深情淡如水
    爱情四十九课,畸恋小变态
    爱情四十三课,热战与冷战
    背完这444句,你的口语绝对不成问题了
    [沟通][两性]<<为什么男人爱说谎女人爱哭 (Why men lie and wowen cry)>>艾伦皮斯.芭芭拉皮斯(美)
    做网站用UTF8还是GB2312?
    查询ORACLE表的约束
  • 原文地址:https://www.cnblogs.com/wjk921/p/5333817.html
Copyright © 2020-2023  润新知