1. 程式人生 > >Spring學習日記(三)搭建MVC基本開發環境

Spring學習日記(三)搭建MVC基本開發環境

一、準備工作

1、新建web project

2、新增spring開發支援

      此時會自動配置上web包,其中包含了springMVC支援。也就是說可以直接在專案中使用Spring MVC了

3、定義相關配置

(1)Spring MVC的所有配置都要在applicationContext.xml檔案

    <!-- mvc的配置也是基於annotation實現的 -->
    <context:annotation-config/>
    <context:component-scan base-package="cn.mldn"/>
    <!-- 定義Spring MVC的處理 -->
    <mvc:annotation-driven/>
    <mvc:default-servlet-handler/>

(2)配置web.xml檔案

         最好的MVC設計,所有的控制器的處理使用Servlet完成,springMVC也是的

        從下面的程式程式碼可以看出:使用了Servlet進行所有Action的分配處理,也就證明,開發之中,過濾器可以用於所有的驗證操作。

  <!-- 此部分是負責Spring容器啟動的,即使有spring MVC,這部分也不可少-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  
  <!-- 配置springMVC中要用的控制器 -->
  <servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:applicationContext.xml</param-value>
  </init-param>
  </servlet>
  <servlet-mapping>
      <servlet-name>springmvc</servlet-name>
      <url-pattern>*.action</url-pattern>
  </servlet-mapping>
  
  
</web-app>

4、演示一下程式碼

(1)新建一個action類

package cn.mldn.action;

import javax.xml.ws.Dispatch;

import org.springframework.web.servlet.DispatcherServlet;

public class MessageAction {
	public void print() {
	}

}

(2)將專案釋出到TOMCAT上:暫時不會

二、Spring MVC的基本操作

用最原始的方式來實現。資料型別全是vo型別

1、建立一個Message.java類

public class Type {
	private String title;
//生成setter/getter/toString
public class Message {
	private Integer mid;
	private String title;
	private Double priceDouble;
	private Date pubDate;
//生成setter/getter/toString

2、定義action

定義MessageAction,進行資料的接收

@Controller //定義了一個控制器
@RequestMapping("/pages/back/message/*") //整體訪問路徑
public class MessageAction {
	@RequestMapping("hello_demo") //為demo方法定義對映子空間
	public void demo(Message msg) {
		System.out.println(msg);
	}
}

3、由於是第一次執行,可以利用地址重寫的方式傳遞所要的資料

(1)點選圖示的那個按鍵:

(2)將專案新增到Tomcat,myeclipse好像自己有Tomcat,不過我事先也已經裝好了,如果不知道怎麼下載安裝,請點選此連結

(3)選擇start

(4)觀察到結果欄有資料,年月日一堆字母等等,就對了。再點選綠色開始按鍵。

    此時,觀察myeclipse結果欄

    說明請求有被傳過來

特點:控制器中不需要再編寫類屬性來接收引數,所有的引數都直接放到了處理的業務方法上,同時避免了例項化物件的問題。

          傳遞的引數只需要傳遞屬性名稱即可,如果傳遞的是引用的資料型別,則要按照“.”排列即可(例如:type.title)

4、後臺可以輸出資訊,但是前臺顯示404,原因:對於返回值的處理,在springMVC中有一些要求

在正常的開發環境之中,往往提供一個forward.jsp頁面,功能是進行操作完成後的資訊提示。

(1)建立一個forward.jsp介面,並修改內容(重點看body部分),一般情況下,都這麼寫的

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
    <script type="text/javascript">
        window.alert("${msg}")
        window.location="<%=basePath%>${url}"
    </script>
  </body>
</html>

要想由一個控制器跳轉到forward介面,至少需要兩個東西

  • 控制器要知道forward介面的路徑
  • 需要傳遞若干個request屬性

在springMVC中提供一個類:org.springframework.web.servlet.ModelAndView,很重要!使用ModelAndView類用來儲存處理完後的結果資料,以及顯示該資料的檢視

  • 儲存方法:ModelAndView  addObject(String attributeName, Object attributeValue)

5、更好地處理跳轉

import cn.mldn.vo.Message;

@Controller //定義了一個控制器
@RequestMapping("/pages/back/message/*") //整體訪問路徑
public class MessageAction {
	@RequestMapping("hello_demo") //為demo方法定義對映子空間,沒有指定請求方法(有GET/POST兩種)
	public ModelAndView demo(Message msg) {
		ModelAndView mav=new ModelAndView("/pages/forward.jsp");
		mav.addObject("msg", "訊息資訊新增成功");
		mav.addObject("url","/index.jsp");
		System.out.println(msg);
		return mav;
	}
}

重新執行專案

總結:springMVC的優勢

  • 避免了過於複雜的頁面跳轉路徑的配置操作
  • 避免了專案之中出現過多的“.”作為引數的情況

相關推薦

Spring學習日記搭建MVC基本開發環境

一、準備工作 1、新建web project 2、新增spring開發支援       此時會自動配置上web包,其中包含了springMVC支援。也就是說可以直接在專案中使用Spring MVC了 3、定義相關配置 (1)Spring MVC的所有配置都要在a

3ds Max學習日記

arc 操作 自己 https img 螺旋 沒有 hello 就是 ??今天把第三章搞完了,學的是樣條線(splines)建模的一些操作。不過實習又有新任務了,得去研究一下如何將單張圖片轉化為三維模型(我擦,這神馬操作),所以可能沒有那麽多時間愉快地與3ds max玩耍了

Spring 學習歷程

Bean容器初始化 基礎 org.springframework.beans org.springframework.context BeanFactory提供配置結構和基本功能,載入並初始化Bean ApplicationContext儲存了Bean物件,並且

快速開發框架SpringBoot-學習日記

第2章 Spring Boot重要用法 Spring Boot中使用JSP頁面 步驟: 在src/main下建立webapp目錄 將webapp目錄指定的web資源目錄 匯入JSP引擎內建Tomcat的jasper<!--Sprin

Springboot學習日記自動裝配

Spring模式註解裝配 定義:一種用於宣告在應用中扮演“元件”角色的註解。 舉例:@Component、@Service、@Configuration 裝配:<context:component-scan>(Spring 2.5) @ComponentScan(Spring 3.0) 複製程式

python學習日記

        今天最後一次更新部落格,終於也學完了一天的東西了!開心!以後就每次學完就更新,不拖更!         最後一講主要是學了python的資料型別。雖然說在python裡面不像c一樣,需要加變數型別來宣

Spring學習手札理解IoC 拯救不開心

  Inverse of Control,翻譯成“控制反轉”,是Spring的核心。IoC不是一種技術,而是一種設計思想。就是將原本在程式中手動建立物件的控制權(new Object() ),交由Spring容器來管理控制。不用new物件,直接從Spring那裡獲取一個物件(其內部使用的是反射技術)。   

Spring 學習筆記IOC之XML方式配置 第二回Bean節點屬性的配置

<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/X

Spring 學習筆記IOC之XML方式配置 第一回 javaBean的配置與獲取

IOC的兩種方式: XML方式 註解方式 XML方式 需要的jar包   spring-beans-4.3.3.RELEASE.jar spring-context-4.3.3.RELEASE.jar spring-context-support

嵌入式學習日記

2018年11月08日 21:59:30 huyz_2008 閱讀數:12 個人分類: 嵌入式學習

numpy學習日記

numpy裡要分清有哪些方法獲得的陣列是原始陣列的檢視,這樣的陣列它們共享了同一個資料記憶體,修改其中一個數組內的元素,另外的也會發生變化 獲取素組序列有兩種方法 1:使用整數序列存取元素 使用下標獲取元素 使用此方法獲得的陣列將

Spring學習日記AOP的深入操作

上次的AOP操作簡單,但對初學者而言,刪繁就簡地體現了aop的設計思想。但有些過於簡化了,本次將把引數帶入到aop的操作中。 一、前置通知中含引數 1、修改切面處理類:改寫serviceBefore(),使其含有引數 public void serviceBefor

Spring學習筆記資料庫的操作

資料庫的操作 首先增加依賴,在pom.xml中增加以下依賴 <!-- JPA --> <dependency> <groupId>org.springf

Makefile 學習日記——makefile的瘦身

還是先看例子: 原料:main.c printfun.c methed.c 及其.h檔案 //main.c #include "main.h" void main() { print_f(); printf("\n%

VBS學習日記 執行外部程式

利用 Vbs 執行外部程式 Vbs 只提供了程式設計的一個基本框架,使用者可以使用 Vbs 來定義變數、過程和函式, vbs 也提供了一些內部函式和物件,但是 Vbs 沒有提供任何命令來訪問 Windows 系統內部的部件,但是值得慶幸的是,Vbs 雖然不能自己完成這些任務

JavaWeb學習日記

DTD語法(要求不高,不要求寫,要求會讀) 兩種寫法 引入中寫的:SYSTEM,表示當前的DTD檔案是本地的 如果寫的是:PUBLIC,則表示引入的DTD檔案是來自於網路的 在XML內部 <?xml version="1.0" encodi

Unity3D學習日記貝塞爾曲線

這裡有很多小夥伴可能不知道啥事貝塞爾曲線是啥玩意,如果你用過PS的鋼筆功能就知道這是啥,如果還是不知道這是啥那麼說一個遊戲你就知道了“憤怒的小鳥”這個遊戲用到彈弓效果可以用這個貝塞爾曲線來實現。還不知道的話拿自己去百度谷歌,這個是遊戲很常用到的一個畫曲線的函式方式。 那麼我

安卓學習1——搭建安卓開發環境:Eclipse+ADT+Android SDK

安裝JDK 這裡可以參考我之前寫的一篇關於安裝JDK的教程, 請看下面連結吧。 安裝Eclipse Eclipse 是一個開放原始碼的、基於Java的可擴充套件開發平臺。就其本身而言,它只是一個框架和一組服務,用於通過外掛元件構建開發環境。幸運的是,Eclipse 附帶了一個標準的外掛集,包括Java開發工

資料分析與挖掘入門——學習筆記numpy的基本函式使用

numpy的基本函式使用 1 通用函式彙總 一元函式 函式 說明 abs,fabs 計算整數、浮點數或複數的絕對值,對於非複數值,可以使用更快的fabs sqrt 計算各元素的平方根 square

Spring事務專題事務的基本概念,Mysql事務處理原理

# 前言 本專題大綱: ![專欄大綱](https://gitee.com/wx_cc347be696/blogImage/raw/master/image-20200725231232778.png) 我重新整理了大綱,思考了很久,決定單獨將MySQL的事務實現原理跟Spring中的事務示例分為兩篇文