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

    引言

    昨天有粉丝问我,Java后期应该学什么,我告诉他们应该学框架,然而对于数量庞大的框架,多数人不知道该从哪个框架入手,我个人的学习建议是:先学ssh(Struts2、Hibernate、Spring),然后学SpringMVC,Spring Data,Mybatis,Spring Boot,Spring Cloud,最后完成一些综合性的案例。当然这只是我的一些个人建议,也不一定适用于所有人,但基本的学习路线应该是这样的。
    对于javaee框架部分的文章,我也是按照这样的路线写下去的。所以,在学完ssh框架之后,我们应该继续来学习一下SpringMVC。
    本篇文章就是针对SpringMVC进行一个快速入门。

    框架介绍

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。
    Spring是为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一。Spring3.0之后全面超越Struts2,成为最优秀的MVC框架,SpringMVC通过一套MVC注解,让POJO成为处理请求的控制器,而无需实现任何接口。
    那有人就要提出质疑了,既然SpringMVC比Struts2框架更好,更优秀,我们为什么还要学习Struts2呢?首先呢,多学点也没啥坏处,其次呢,一些公司的老项目用的应该还是Struts2,所以如果你不会Struts2也说不过去吧,最后就是如果你学过Struts2,当你学SpringMVC的时候,你将会更加地得心应手。

    HelloWorld

    毫无疑问,第一个入门项目当然就是HelloWorld了。
    实现步骤:

    1. 加入jar包
    2. 在web.xml中配置DispatcherServlet
    3. 加入SpringMVC的配置文件
    4. 编写处理请求的处理器,并标识为处理器
    5. 编写视图

    1.加入jar包
    在这里插入图片描述

    2.在web.xml中配置DispatcherServlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    	id="WebApp_ID" version="3.1">
    	<display-name>SpringMVC</display-name>
    
    	<!-- 配置DispatcherServlet -->
    	<servlet>
    		<servlet-name>springDispatcherServlet</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<!-- 配置初始化参数 -->
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>classpath:springmvc.xml</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    
    	<!-- Map all requests to the DispatcherServlet for handling -->
    	<servlet-mapping>
    		<servlet-name>springDispatcherServlet</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    
    </web-app>
    

    这是一段固定的配置,如果你的开发工具有Spring插件的话,那就很容易将这段代码打出来。
    在这里插入图片描述
    点击空白处使用快捷键,然后选中dispatcherservlet,回车即可。
    init-param标签配置的是初始化参数,其需要配置的参数是SpringMVC配置文件的位置和名称,学过Struts2就会知道,load-on-startup设置为1,即该Servlet是在web容器被加载的时候就创建,其它的和Struts2类似。

    3.加入SpringMVC的配置文件
    在src目录下创建SpringMVC的配置文件:

    <?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"
    	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-4.0.xsd">
    
    	<!-- 配置自动扫描的包 -->
    	<context:component-scan base-package="com.itcast.spring"></context:component-scan>
    	
    	<!-- 配置视图解析器 -->
    	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/views/"></property>
    		<property name="suffix" value=".jsp"></property>
    	</bean>
    	
    </beans>
    

    这些配置在Spring中已经说过了,就不再重复介绍了,实在不了解的话可以翻我之前的文章看一下。
    这是SpringMVC提供的视图解析器,将控制层方法返回值解析为实际的物理视图,关于视图解析器的详细内容我会在后面的文章中详细说,这里不过多赘述。

    4.编写处理请求的处理器,并标识为处理器

    package com.itcast.spring.handler;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class HelloWorld {
    
    	/**
    	 * 使用@RequestMapping注解来映射请求的URL
    	 * 返回值会通过视图解析器解析为实际的物理视图
    	 * 
    	 * @return
    	 */
    	@RequestMapping("/helloworld")
    	public String hello() {
    		System.out.println("hello world");
    		return "success";
    	}
    }
    

    通过@Controller将该类标记为控制器,并交由SpringIOC容器管理。

    5.编写视图

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<a href="helloworld">Hello World</a>
    </body>
    </html>
    

    到这里,一个基本的案例就完成了,下面我们来详细分析一下执行流程。
    首先我们访问index.jsp,该页面有一个超链接,我们通过点击超链接,会发出一个/helloworld的请求,此时在web.xml中配置的springDispatcherServlet会拦截该请求,然后SpringIOC容器会去匹配相关的控制器,因为在HelloWorld类中的hello()方法上面注解了映射请求路径@RequestMapping("/helloworld"),所以超链接发出的请求和该方法成功匹配,便会执行该方法,并返回了"success"字符串。而该返回值会通过视图解析器解析为实际的物理视图,而InternalResourceViewResolver解析器的解析规则为:prefix + returnVal + 后缀。也就是说,我们在解析器中配置的/WEB-INF/views/ 加上返回值 "success" + 后缀".jsp" 将指向物理视图(/WEB-INF/views/success.jsp)。
    所以我们在WEB-INF目录下新建一个views文件夹,然后新建success.jsp文件:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<h4>Success Page</h4>
    </body>
    </html>
    

    通过这一系列的流程处理之后,当我们点击超链接的时候,页面会跳转至success.jsp页面,到底是不是这样的呢?运行见分晓:
    在这里插入图片描述

    其它内容

    对于web.xml文件中的配置,其实也可以不用配置init-param初始化参数,而是使用默认的配置文件。但是默认的配置文件有一些讲究:

    • 必须放在WEB-INF目录下
    • 文件名称必须为<servlet-name> + -servlet.xml

    什么意思呢?
    在这里插入图片描述
    在这里配置的servlet的名字加上-servlet.xml即为配置文件名,所以在这个项目中,配置文件名应为springDispatcherServlet-servlet.xml,因为servlet-name可以随意定义,所以其实配置文件名也可以跟着随意。
    在这里插入图片描述

  • 相关阅读:
    Codeforces 1255B Fridge Lockers
    Codeforces 1255A Changing Volume
    Codeforces 1255A Changing Volume
    leetcode 112. 路径总和
    leetcode 129. 求根到叶子节点数字之和
    leetcode 404. 左叶子之和
    leetcode 104. 二叉树的最大深度
    leetcode 235. 二叉搜索树的最近公共祖先
    450. Delete Node in a BST
    树的c++实现--建立一棵树
  • 原文地址:https://www.cnblogs.com/blizzawang/p/11411497.html
Copyright © 2011-2022 走看看