Spring MVCの開始:最初のSpring MVCプログラム

Spring MVCの概要

      Spring MVCは、Web MVC設計パターンを実装する軽量のWebフレームワークを提供します。これは、Strutsフレームワークと同じです。これはMVCフレームワークに属しますが、その使用法とパフォーマンスはStrutsよりも優れ
ています。SpringMVCには次の特性があります:
(1)Springフレームワークの一部として、Springが提供する他の機能を簡単に使用できます
(2)他のフレームワークと柔軟かつ簡単に統合できます
(3)フロントコントローラーDispatcherServletを提供するため、開発者は追加のコントローラーオブジェクトを開発する必要がありません
(4)ユーザー入力を自動的にバインドし、データ型を正しく変換できます
(5)組み込みの共通バリデーターは、検証が失敗した場合にユーザー入力を検証でき、入力フォームにリダイレクトされます
(6)国際化のサポートユーザー領域に応じて複数の言語を表示します
(7);複数のビューテクノロジーをサポートします。JSPVelocity FreeMarker
(8)などのビューテクノロジーをサポートします。編集後、アプリケーションを再コンパイルする必要はありません。

Spring MVCワークフロー

画像のソース:Java eeエンタープライズアプリケーション開発チュートリアル

Spring MVCプログラムの完全な実行プロセスは次のとおりです。
(1)ユーザーがブラウザーを介してサーバーにリクエストを送信し、そのリクエストはSpring MVCフロントコントローラーDispatcherServletによってインターセプトされます
(2)DispatcherServletインターセプトされます要求後、HandlerMappingプロセッサマッパーを呼び出します
(3)プロセッサマッパーは、要求URLに従って特定のプロセッサを見つけ、プロセッサオブジェクトとプロセッサインターセプタ(存在する場合)を生成し、それをDispatcherServletに返します
(4)DispatcherServlet情報を返すことにより、適切なHandlerAdapter(プロセッサアダプタ)を選択します
(5)HandlerAdapterは、ハンドラ(プロセッサ)を呼び出して実行します。プロセッサは、プログラムで記述されたコントローラクラス
バックエンドコントローラとも呼ばれます)( 6)Controllerが実行されると、ModelAndViewオブジェクトが返されます。これには、ビュー名またはモデルとビュー名が含まれます
(7)DispatcherServletに返されたHandlerAdapter ModelAndViewオブジェクト
(8)DispatcherServletは、ModelAndViewオブジェクトに基づいて適切なViewReslover(ビュー)を選択しますパーサー)
(9)ViewReslover解析後、特定のビュー(ビュー)をDispatcherServlet
(10)DispatcherServletビューに返し、レンダリングします(つまり、モデルデータをビューに入力します)。
( 11 )视图渲染结果会返回给客户端浏览器显示

第一个Spring MVC程序

项目结构图如下:
注意:
1、web.xml要放在WEB-INF目录下
2、springMVC-config.xml要放在src目录下
一般都这样命名,图中是为了区分不同的配置
在这里插入图片描述
web.xml

<?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>spirngmvc_01</display-name>
  
  <!-- 配置前端过滤器 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<!--servlet-class中的值是spring-webmvc包提供的类,即前端控制器,用于控制所有请求 -->
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	
  	<!-- 初始化时加载文件(springmvc-anno.xml) -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc-anno.xml</param-value>
  	</init-param>
  	<!--  表示容器在启动时立即加载 Servlet,数值越小,加载越快 -->
  	<load-on-startup>1</load-on-startup>
  	
  </servlet>
  
  <!-- 配置servlet映射  servlet-name取值与servlet的servlet-name一致-->
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>

springmvc-anno.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"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
	   http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
	   http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-4.3.xsd">
	<!-- 指定需要扫描的包 -->
	<context:component-scan base-package="com.controller" >
	 
	       <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>  
	       
	</context:component-scan>
	<!-- 定义视图解析器 -->
	<bean id="viewResolver" class=
    "org.springframework.web.servlet.view.InternalResourceViewResolver">
	     <!-- 设置前缀 -->
	     <property name="prefix" value="/WEB-INF/jsp/" />
	     <!-- 设置后缀 -->
	     <property name="suffix" value=".jsp" />
	</bean>
</beans>  

springmvc-xml.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"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        <!-- 配置Handel,映射"/hello"请求 -->
        
        <bean name="/hello" class="com.controller.FirstController"/>
        <!-- 处理映射器将bean的name作为url进行查找,需要在配置Handel时指定name(即url) -->
        
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
        
        <!-- SimpleControllerHandlerAdapter是一个处理器适配器,所有处理器适配器都要实现HandlerAdapter接口,-->
        <!--通过适配器实现对handlReqeust的调用 -->
        
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
        
        <!-- 视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>

controller类

package com.controller;

import java.lang.annotation.Annotation;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//import org.springframework.web.servlet.mvc.Controller;


//1、基于注解
@Controller
@RequestMapping(value="/hello")
public class FirstController {
	
	@RequestMapping(value="/firstController")
	public String handleRequest(HttpServletRequest request,
			HttpServletResponse response, Model model) throws Exception {
		// 向模型对象中添加数据
		model.addAttribute("msg", "hello,这是我的第一个Spring MVC程序,基于annotation");
		// 返回视图页面
		return "first";
	}

}

//1、继承Controller类
//public class FirstController implements Controller{
//
//	@Override
//	public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
//		
//		ModelAndView mav = new ModelAndView();
//		
//		mav.addObject("msg", "hello,这是我的第一个Spring MVC程序,基于xml");
//		mav.setViewName("/WEB-INF/jsp/first.jsp");
//		return mav;
//	}
//}

视图(jsp)

<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
         "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>入门程序</title>
</head>
	<body>
	     ${msg}
	</body>
</html>

将项目发布到Tomcat中,并启动Tomcat服务器,然后再浏览器中输入http://localhost:8080/项目名/hello/firstController(基于注解)

使用注解或继承controller类
1、springMVC.xml文件是不一样的
2、web.xml文件中的classpath也要相应的改,
3、在浏览器中输入的url也要相应的改

おすすめ

転載: blog.csdn.net/m0_46267375/article/details/106670294