SpringMVC(零)—— 第一个SpringMVC 程序

Posted Johnny*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC(零)—— 第一个SpringMVC 程序相关的知识,希望对你有一定的参考价值。

  1. 开发所需Jar

开发Spring程序所必须的5个jar + Spring-webmvc.jar +Commons-logging.ar

SpringMVC就相当于Javaweb中Servlet。
在这里插入图片描述

在JavaWeb中,客户端发起的请求是根据web.xml中的url-pattern匹配然后交给对应的servlet区处理的。现在使用了Springmvc而不用普通的servlet类,那么如何让Springmvc接手servlet的工作呢?

SpringMVC提供了一个前端控制器DispatcherServlet,是 开发人员无需额外开发控制器对象。可以通过以下配置springmvc.xml配置文件,拦截所有请求,交给SpringMVC处理:


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

其中:

<url-pattern>.action</url-pattern>

/ 表示一切请求  ,注意不是 /*
/user 表示拦截以 /user开头的请求
/user/abc.do  表示只拦截该请求
.action   表示只拦截 .action结尾的请求

在web.xml中可以通过:

 	<init-param>
  			<param-name>contextConfigLocation</param-name>
  			<param-value>classpath:springmvc.xml</param-value>
  	</init-param>

指定springmvc配置文件的路径,如果要省略,则springmvc配置文件必须放到 默认路径:
/WEB-INF下,且文件名为必须为springDispatcherServlet-servlet.xml;

第一个SpringMVc项目

项目结构:

在这里插入图片描述

spring-mvc.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"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
		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.3.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">

	<!-- 配置注解扫描器 -->
	<context:component-scan base-package="com.johnny.controller"></context:component-scan>
	
	<!-- 配置视图解析器
		该类的父类UrlBasedViewResolver有prefix和suffix两个属性
		由于配置解析器的前缀和后缀
	 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="views/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>

web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SPringMVCProject</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- 配置SpringMVC 自带的servlet
  	init-param 设置加载时的参数,该类DispatcherServlet有contextConfigLocation属性 用于注入SpringMVC 配置文件位置
  	load-on-startup 设置启动级别 1表示优先级最高
  	通过url-pattern的元素的/将所有的URL拦截,并交由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>
  
  <!-- / 表示拦截所有请求	 -->
  <servlet-mapping>
  	<servlet-name>springDispatcherServlet</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>
package com.johnny.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class SpringMvcController {
	
	@RequestMapping("welcome")
	public String welcome() {
		return "success"; //返回 success页面
	}

}

index.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>
	<a href="welcome">to success.jsp</a>

</body>
</html>

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>	
	hello ,this is success.jsp! 
</body>
</html>

请求过程

在这里插入图片描述
SpringMVC的执行流程:

在这里插入图片描述

以上是关于SpringMVC(零)—— 第一个SpringMVC 程序的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC 视图解析器 InternalResourceViewResolver

SpringMVC接受JSON参数详解及常见错误总结我改

spring MVC新手从零新建第一个hello world项目

SpringMVC08:拦截器+文件上传下载

Android(或者Java)通过HttpUrlConnection向SpringMVC请求数据(数据绑定)

SpringMVC 常用applicationContext.xmlweb.xmlservlet-mvc.xml简单配置