springMVCのSSMの概要

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/JAVA_php_Jack/article/details/102714704

springMVCプロフィール

1、springmvcスプリングは、モジュールフレーム、springmvcばねと中間層の統合によって統合なしです。
2は、springmvc MVCフレームワークは、Webに基づいています。
MVC:MVC是一个设计模式,C控制层,M模块层,V显示层这样的设计理念,而SSM框架里面SPRING MVC本身就是MVC框架,作用是帮助(某种意义上也可以理解为约束)我们要按照MVC这样的设计来开发WEB项目,而另外两个框架spring主要是用作IOC,AOF等其他的一些设计原则,至于mybatis是用来方便操作数据库的,所以他们都在MV里面,至于V指的是展示部分,一般是指JSP,freemarks这种其实,和SSM就没有太大的关系了
B \ SシステムにおけるアプリケーションのMVC:B / sのデータ・システムのモデルは、ビューに充填することができません。

request请求
response响应
用户
C 控制器_controller\接口用户请求\响应
请求模型进行处理
视图渲染,将模型数据填充到request域
处理结果返回
C 控制器_controller\接口用户请求\响应
M 模型_pojo\action\service\dao
V 视图_view

3、pringmvcプレゼンテーション層:フロント及びデータ伝送便宜の後端部。
図4は、SpringMVCはSSHフレーム支柱に対応する:Spring MVCのコントローラを有し、同様の効果ストラットと、外部要求、サービス層へ解像度パラメータを受け取ります。

SpringMVC Struts2のとは対照的

今SSMフレームはSpringMVC SSHフレーム支柱は相当来て、次に方法Struts2のコントラストSpringMVCによって:
1、入口はSpringMVCサーブレットであり、Struts2のフィルタです。
図2に示すように、Struts2のよりわずかに速くSpringMVCは、SPRINGMVC方法は、設計に基づいており、クラスベースStruts2の設計は、各インスタンスは、要求アクションを送信するれます。
3、SpringMVCはStruts2のより効率的な開発、より簡潔な使用します。サポートJSR303、AJAX要求の処理より便利に。
図4は、ページ開発効率のStruts2のOGNL発現が高いSpringMVCを比較しました。

springMVCワークフロー

springMVCワークフロー
注:
1、また知られているハンドラコントローラ
2、HandlerInterceptorから:インターセプタ
3、図:JSP \ FreeMaker \のExcel \のPDF
。4、コントローラの先端が見つけるために、XMLに従って、注釈HandlerMappingルックアップハンドラを要求するように構成されてもよい
5、のModelAndViewフレームspringMVCありますモデルとビューなど、基礎となるオブジェクト、
6、制御要求パーサビューの正面端面図、実際のビュー(JSP)に分解論理ビュー名に従って。
7、のビューのレンダリング:(のModelAndViewオブジェクト)要求フィールド充填モデルへのデータ
コンポーネント。
図1に示すように、コントローラのDispatcherServletの先端が:モジュール間の結合の還元、中継器に対応する要求、応答結果を受け入れ、それを
2、プロセッサマッパーhandlerMappingは:ハンドラに要求URLを探す
3、アダプタプロセッサHandlerAdapter:アダプターが正しくハンドラを実行するために行くことができるように、特定のルール(ルールはHandlerAdapter必要)ハンドラに応じて実行するように、調製HandlerAdapterハンドラの要件に従ってことに注意ください
4、ビューリゾルバviewresolver:ビューを解析し、論理に従って本当の名前解決に表示 ビュー(ビュー)
。5、ビューの種類をサポートするためにビューのインタフェースの実装クラスの図です。

springmvcプロフィール

これに先立ち、私たちは、所望のばねのjarパッケージをインポートする必要があります。

1、春のフレームワークのjarパッケージ:
簡単のため、項目spring-framework-3.2.0.RELEASE-with-docs.zip/dist/ WEB-INF / libディレクトリにコピーするためのjarファイル内のすべてのパケット(を含む特定のspring- 3.2.0.RELEASE.jar-webmvc);
2、Springフレームワークに依存するJARパッケージ:
Apacheのコモンズのログログを追加するには、コモン・ログ-1.1.1.jar本明細書中で使用され、
タグを追加する必要がライブラリのサポートをJSTL、このこれは、JSTL-1.2.jarで使用されています。

私たちのweb.xmlに以下の設定を追加します。

図1に示すように、コントローラ構成(クラスパス:パスクラスパスでのDispatcherServlet-servlet.xml)の前端

  <!-- 配置前端控制器DispatcherServlet -->
  <servlet>
  	<servlet-name>dispatcherServlet</servlet-name>
  	<!-- 在spring-webmvc-3.2.0.RELEASE.jar包中找到DispatcherServlet复制路径 -->
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- contextConfigLocation配置springmvc加载的配置文件(包括处理器映射器、适配器等等)
  	如果不配置contextConfigLocation,默认加载/WEB-INF/servlet名称-servlet.xml-->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:dispatcherServlet-servlet.xml</param-value>
  	</init-param>	
 	<!-- 在WEB容器启动时就实例化DispatcherServlet,而不是等到该servlet被选择时。正数数字越小,优先级越高。-->
  	<load-on-startup>1</load-on-startup>
  	
  </servlet>
  <servlet-mapping>
  	<servlet-name>dispatcherServlet</servlet-name>
  	<!--
	第一种:*/.action,访问以.action结尾由Dispatcherervlet进行解析
	第二种:/,所有访问的地址都由Dispatcherervlet进行解析,对于静态文件的解析需要配置不让Dispatcherervlet进行解析
	第三种:/*,这样配置不对,使用这种配置,最终要转发到一个jsp页面时,仍然会由Dispatcherervlet解析jsp地址,不能根据jsp页面找到Handler,会报错
  	-->
  	<url-pattern>/</url-pattern>
  </servlet-mapping>

注意:あなたは、プロジェクトをビルドするMavenを使用している場合、srcディレクトリ:SRC /メイン/リソース

あなたはRESTスタイルのURLを使用する場合は、web.xmlにHidddenHttpMethodFilterを設定する必要があります

<!-- 配置HiddenHttpMethodFilter 作用可以把post请求转为delete或者put请求 -->
  <filter>
  	<filter-name>HiddenHttpMethodFilter</filter-name>
  	<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>HiddenHttpMethodFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

で、私たちのDispatcherServlet-servlet.xmlに以下の設定を追加します:

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-3.2.xsd 
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
		
	<!-- 配置Handler -->
	<bean name="/queryItems.action" class="com.jacket.ssm.controller.ItemsController"/>
	
	<!--处理器映射器-->
	<!-- 根据bean的name作为url进行查找Handler 将action的url配置在bean的name中 -->
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
	
	<!--处理器适配器:所有的处理器适配器都实现HandlerAdapter-->
	<bean	class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 

	<!-- 视图解析器 解析jsp视图,默认使用jstl标签-->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
</beans>

概要:
プロセッサーアダプター:
ソースコードSimpleControllerHandlerAdapterを見て、

public class SimpleControllerHandlerAdapter implements HandlerAdapter {
	public boolean supports(Object handler) {
		return (handler instanceof Controller);
	}
	...
}

このアダプタは、コントローラインターフェースのソースコードを表示するコントローラインターフェースを実装するハンドラを実行することができ、

public interface Controller {
	/**
	 * Process the request and return a ModelAndView object which the DispatcherServlet
	 * will render. A <code>null</code> return value is not an error: It indicates that
	 * this object completed request processing itself, thus there is no ModelAndView
	 * to render.
	 * @param request current HTTP request
	 * @param response current HTTP response
	 * @return a ModelAndView to render, or <code>null</code> if handled directly
	 * @throws Exception in case of errors
	 */
	ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;
}

コントローラインタフェースは、のModelAndViewオブジェクトを返します。

ハンドラを書きます

あなたは、コントローラ・インタフェースは、org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapterアダプタによって実行することができますを実現する必要があります。

package com.jacket.ssm.controller;

import java.util.ArrayList;
import java.util.List;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import com.jacket.ssm.po.Items;

public class ItemsController implements Controller {

	@Override
	public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		// 调用service查找数据库,查询商品列表,这里使用静态数据模拟
		List<Items> itemsList = new ArrayList<Items>();
		//向list填充静态数据
		Items items_1 = new Items();
		items_1.setName("联想笔记本");
		items_1.setPrice(6000f);
		items_1.setDetail("ThinkPad T430 联想笔记本电脑!");
		
		Items items_2 = new Items();
		items_2.setName("苹果手机");
		items_2.setPrice(5000f);
		items_2.setDetail("iphone6苹果手机!");
		
		itemsList.add(items_1);
		itemsList.add(items_2);
		
		//创建modelAndView准备填充数据、设置视图
		ModelAndView modelAndView = new ModelAndView();
		
		//填充数据,相当于request的setAttribut,在jsp页面中通过itemsList获取数据
		modelAndView.addObject("itemsList", itemsList);
		//指定视图
		modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
		
		return modelAndView;
	}
}

ここでは、スクリーンショットを行うspringMVCプロジェクトの私自身の使用です。

おすすめ

転載: blog.csdn.net/JAVA_php_Jack/article/details/102714704