zoukankan      html  css  js  c++  java
  • SpringMVC入门

    一、SpringMVC

    1、什么是MVC

    (1)M 指的是 模型(Model)
      模型实质指的就是数据,即对数据的操作,也即对dao、bean等的相关操作。
    (2)V 指的是 视图(View)
      视图的作用就是显示模型中的数据,即数据的显示,也即jsp,html等相关操作。
    (3)C 指的是 控制器(Controller)
      控制器(Controller)的作用就是将不同的模型数据(Model)显示在不同的视图(View)上。
      比如Servlet,用户请求会经过servlet(Controller),经过数据处理(Model),返回到jsp等页面(View)。

    2、什么是SpringMVC

    (1)SpringMVC是Spring框架的一个模块,是基于mvc的webframework模块。
    (2)用于替代servlet(处理请求、响应请求,获取表单参数,表单校验等),且支持REST形式的URL请求。
    (3)Spring MVC采用了松散耦合的可插拔组件结构,通过使用一套注解,使一个Java类成为前端控制器(Controller),不需要实现任何接口。


    二、SpringMVC使用入门

    1、使用步骤

      引入相关jar包或添加相关依赖信息。
    step1:配置前端控制器(DispatcherServlet)
      作用:用于接收请求、响应请求,即相当于一个中央转发器。
    step2:配置前端处理器映射器(HandlerMapping)
      作用:用于根据 url 查找 Handler(Controller)。
    step3:配置前端处理器适配器(HandlerAdapter)
      作用:按照指定的规则去执行 Handler。
    step4:配置视图解析器(ViewResolver)
      作用:根据逻辑视图解析成真正的视图 View。
    step5:编写视图 View
      作用:展现给前台的页面,html,jsp等。
    step6:编写业务代码 Controller、Service、Dao(也即Handler)
      作用:编写业务逻辑处理代码。

    其中:step5、step6需要程序员自己开发,其余的只需配置即可。

    2、SpringMVC工作流程

    step1:浏览器发送一个HTTP请求。
    step2:请求进入前端控制器 DispatcherServlet。
    step3:DispatcherServlet 调用映射器 HandlerMapping 查找相应的 Handler,DispatcherServlet 调用适配器HandlerAdapter 去执行 Handler。
    step4:Controller 调用相关处理后,将结果(ModelAndView)返回给 视图解析器 ViewResolver。
    step5:ViewResolver 定位到 相对应的 视图 View(比如 html,jsp等),返回响应结果给浏览器。

    3、使用idea编写HelloWorld(两种创建方式)

    (1)新建一个springmvc项目(电脑可以联网时)。
      step1:File --> New --> Project...

      step2:选择Spring -->  Spring MVC(会自动勾选Web Application)。

      step3:填写项目名。

      step4:等待联网下载。(此处耐心等待即可,切记不要乱点,要不然后面可能会出现一系列恶心的情况,比如404问题等)

      step5:项目目录结构如下图:

     

      

    step6:配置tomcat。选择Local,并添加本地的tomcat。

    输入项目名(可选操作),以及Deployment。

    选择Artifact。

    点击“+”号,选择项目(war包)。可以根据需要选择是否填写项目名。

      step7:写一个index.jsp页面,测试tomcat是否成功。

    【index.jsp】
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>首页</title>
      </head>
      <body>
        服务正常启动
      </body>
    </html>

      step8:启动tomcat(一般会自动跳转到画面,如下画面,即可成功)。

      step9:配置前端映射器(DispatcherServlet)

    【默认的web.xml】
    
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
        </context-param>
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>*.form</url-pattern>
        </servlet-mapping>
    </web-app>
    
    
    【可以自定义web.xml】
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    
        <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:dispatcher-servlet.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>

      step10:配置(dispatcher-servlet.xml),在类路径下。
        普通工程在 src目录下,maven工程在resources路径下。

    【dispatcher-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:context="http://www.springframework.org/schema/context"
           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/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd">
        <!-- 开启自动扫描包 -->
        <context:component-scan base-package="com.lyh.controller"/>
    
        <!--配置<mvc:default-servlet-handler />后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,
        它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。-->
        <mvc:default-servlet-handler/>
    
        <!-- 配置注解的处理器映射器和处理器适配器(简化配置)-->
        <mvc:annotation-driven />
        
        <!-- 配置视图解析器 -->
        <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/"/><!--设置JSP文件的目录位置-->
            <property name="suffix" value=".jsp"/>
        </bean>
    </beans>
    
    【配置注解的处理器映射器和处理器适配器(方式一:)】
    <!-- 配置注解的处理器映射器和处理器适配器(简化配置) -->
    <mvc:annotation-driven />
    
    【配置注解的处理器映射器和处理器适配器(方式二:)】
    <!-- 注解的处理器适配器 -->
    <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/> -->
    <!-- 注解的处理器映射器 -->
    <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> -->
    
    
    【注:】
        <mvc:default-servlet-handler/>
        <mvc:annotation-driven />
        只存在<mvc:default-servlet-handler/>时,可能会提示404错误,添加<mvc:annotation-driven />即可。
    (1)当两个标签均存在时,<mvc:annotation-driven /> 提供了 RequestMappingHandlerAdapter,可以用于处理 @RequestMapping注解。
    (2)只存在<mvc:default-servlet-handler/>时,不能处理@RequestMapping注解。
    (3)都不存在时,框架默认提供 AnnotationMethodHandlerAdapter, 用于处理 @RequestMapping注解。

      step11:编写controller

    package com.lyh.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class HelloController {
    
      @RequestMapping("/hello")
      public String show(){
        return "hello";
      }
    }

      step12:编写hello.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>hello</title>
      </head>
      <body>
        <h1>helloworld</h1>
      </body>
    </html>

      step13:重启服务,输入:http://localhost:8080/hello,会跳转到以下页面,至此,helloworld结束。

    (2)新建一个Web工程(电脑不能联网时):
      若电脑不能联网,可以直接建立一个web工程,然后手动导入相关jar包。
      step1:新建一个web工程。
        File --> New --> Project...

      step2:java -->  Web  application

      step3:输入项目名

    项目目录结构如下:

    step4:导入jar包。
      File --> Project Structure

    选择JARs or directories...

    选择jar包。

    注:此处的jar包,理论上不需要这么多,之前栽过坑(少导了几个jar包,导致一直提示404错误,以防万一,都给导了)。

      step5:创建WEB-INF目录与web.xml文件。

    可以看到 <servlet-name>dispatcher</servlet-name> 出错。此处可能是由于web.xml文件未配置。
      File --> Project Structure ,配置 web.xml 路径。

    其余操作,类似于第一种方式,此处不再赘述。

  • 相关阅读:
    ArrayList集合封装 类 并通过方法调用
    ArrayList集合的基本操作
    方法的重复定义和重载
    方法间值的传递,二维数组的定义和遍历
    赋值运算,逻辑运算符,引用数据类型
    Javase;jdk的安装调试;基础语法和变量以及基础数据类型
    E-R画图规则和数据库设计的三大范式
    sql多表查询和子查询
    sql约束的使用
    sql表操作的基础语法
  • 原文地址:https://www.cnblogs.com/l-y-h/p/11502440.html
Copyright © 2011-2022 走看看