欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringMVC編程使用Controller接口實(shí)現(xiàn)控制器實(shí)例代碼

 更新時(shí)間:2017年11月21日 15:38:59   作者:JDI_NW  
這篇文章主要介紹了SpringMVC編程使用Controller接口實(shí)現(xiàn)控制器實(shí)例代碼,具有一定參考價(jià)值,需要的朋友可以參考下。

Controller簡(jiǎn)介

Controller控制器,是MVC中的部分C,為什么是部分呢?因?yàn)榇颂幍目刂破髦饕?fù)責(zé)功能處理部分:

1、收集、驗(yàn)證請(qǐng)求參數(shù)并綁定到命令對(duì)象;

2、將命令對(duì)象交給業(yè)務(wù)對(duì)象,由業(yè)務(wù)對(duì)象處理并返回模型數(shù)據(jù);

3、返回ModelAndView(Model部分是業(yè)務(wù)對(duì)象返回的模型數(shù)據(jù),視圖部分為邏輯視圖名)。

DispatcherServlet,主要負(fù)責(zé)整體的控制流程的調(diào)度部分:

1、負(fù)責(zé)將請(qǐng)求委托給控制器進(jìn)行處理;

2、根據(jù)控制器返回的邏輯視圖名選擇具體的視圖進(jìn)行渲染(并把模型數(shù)據(jù)傳入)。

因此MVC中完整的C(包含控制邏輯+功能處理)由(DispatcherServlet+Controller)組成。

因此此處的控制器是WebMVC中部分,也可以稱(chēng)為頁(yè)面控制器、動(dòng)作、處理器。

之前用注解的方式實(shí)現(xiàn)了控制器,現(xiàn)在換了一種,通過(guò)實(shí)現(xiàn)了Controller接口的Controller類(lèi)來(lái)實(shí)現(xiàn)處理請(qǐng)求的作用。

主要包括:XML配置文件,Java普通類(lèi),Javaform類(lèi),Controller類(lèi),和JSP界面

1.首先是XML配置文件,包括了web.xml和springmvc-servlet.xml。代碼如下:

1)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_3_0.xsd" id="WebApp_ID" version="3.0"> 
 <servlet> 
  <servlet-name>springmvc</servlet-name> 
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
  <load-on-startup>1</load-on-startup> 
 </servlet> 
 <servlet-mapping> 
  <servlet-name>springmvc</servlet-name> 
  <url-pattern>/</url-pattern> 
 </servlet-mapping> 
</web-app> 

2)springmvc-servlet,默認(rèn)方式的DispatcherServlet配置。

<?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-3.0.xsd"> 
   
  <bean name="/product_input.action" class="controller.InputProductController" /> 
  <bean name="/product_save.action" class="controller.SaveProductController" /> 
 
  <bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
   <property name="prefix" value="/WEB-INF/jsp/" /> 
   <property name="suffix" value=".jsp" /> 
  </bean> 
</beans> 

2.Controller類(lèi),包括兩個(gè),一個(gè)用于打開(kāi)首頁(yè),一個(gè)用于處理用戶(hù)輸入并返回

1)InputProductController.java

package controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class InputProductController implements Controller{
	private static final Log logger = LogFactory.getLog(InputProductController.class);
	@Override 
	  public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		logger.info("InputProductController called");
		return new ModelAndView("ProductForm");
	}
}

2)SaveProductController.java,保存用戶(hù)輸入的Product信息并返回

package controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import domain.Product;
import form.ProductForm;
public class SaveProductController implements Controller{
	private static final Log logger = LogFactory.getLog(SaveProductController.class);
	@Override 
	  public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
		logger.info("SaveProductController called");
		ProductForm productForm = new ProductForm();
		//product action properties 
		productForm.setName(request.getParameter("name"));
		productForm.setDescription(request.getParameter("description"));
		productForm.setPrice(request.getParameter("price"));
		//create model 
		Product product = new Product();
		product.setName(productForm.getName());
		product.setDescription(productForm.getDescription());
		try {
			product.setPrice( 
			          float.parsefloat(productForm.getPrice()));
		}
		catch(NumberFormatException e) {
		}
		//insert code to save Product 
		System.out.println("返回視圖");
		return new ModelAndView("ProductDetails","product",product);
	}
}

3.JSP界面,包括兩個(gè),ProductForm和ProductDetails

1)ProductForm.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>Insert title here</title> 
</head> 
<body> 
 
<div id="global"> 
<form action="product_save.action" method="post"> 
 <fieldset> 
  <legend>Add a product</legend> 
  <label for="name">Product Name: </label> 
  <input type="text" id="name" name="name" value="" tabindex="1"> 
  <label for="description">Description: </label> 
  <input type="text" id="description" name="description" tabindex="2"> 
  <label for="price">Price: </label> 
  <input type="text" id="price" name="price" tabindex="3"> 
  <div id="buttons"> 
   <label for="dummy"></label> 
   <input id="reset" type="reset" tabindex="4"> 
   <input id="submit" type="submit" tabindex="5" value="Add Product"> 
  </div> 
 </fieldset> 
</form> 
</div> 
 
</body> 
</html> 

2)ProductDetails.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>Insert title here</title> 
</head> 
<body> 
<div id="global"> 
 <h4>The product has been saved.</h4> 
 <p> 
   <h5>Details:</h5> 
   Product Name: ${product.name} <br /> 
   Description: ${product.description}<br /> 
   Price: $${product.price} 
 </p> 
</div> 
</body> 
</html> 

好了,代碼部分已經(jīng)齊全了,啟動(dòng)server之后,輸入U(xiǎn)RL:http://localhost:8080/SpringSimple/product_input.action;就可以看到首頁(yè)了。

注:配置文件和Controller類(lèi)返回的視圖中文件的位置必須要小心。。

總結(jié)

以上就是本文關(guān)于SpringMVC編程使用Controller接口實(shí)現(xiàn)控制器的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:

Springmvc Controller接口代碼示例

Spring SpringMVC在啟動(dòng)完成后執(zhí)行方法源碼解析

SpringMVC使用MultipartFile 實(shí)現(xiàn)異步上傳方法介紹

如有不足之處,歡迎留言指出。

相關(guān)文章

  • java?jar包后臺(tái)運(yùn)行的兩種方式詳解

    java?jar包后臺(tái)運(yùn)行的兩種方式詳解

    后臺(tái)運(yùn)行jar的方法有多種方法可以實(shí)現(xiàn)Java后臺(tái)運(yùn)行jar文件,下面介紹其中兩種常見(jiàn)的方法,下面這篇文章主要給大家介紹了關(guān)于java?jar包后臺(tái)運(yùn)行的兩種方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Java中的傳值與傳引用實(shí)現(xiàn)過(guò)程解析

    Java中的傳值與傳引用實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了java中的傳值與傳引用實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 深入Java線程中斷的本質(zhì)與編程原則的概述

    深入Java線程中斷的本質(zhì)與編程原則的概述

    本篇文章對(duì)Java線程中斷的本質(zhì)與編程原則進(jìn)行了詳細(xì)的概述,需要的朋友參考下
    2013-05-05
  • SpringBoot通過(guò)@MatrixVariable進(jìn)行傳參詳解

    SpringBoot通過(guò)@MatrixVariable進(jìn)行傳參詳解

    這篇文章主要介紹了SpringBoot使用@MatrixVariable傳參,文章圍繞@MatrixVariable展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • 詳談Java 異常處理的誤區(qū)和經(jīng)驗(yàn)總結(jié)(分享)

    詳談Java 異常處理的誤區(qū)和經(jīng)驗(yàn)總結(jié)(分享)

    下面小編就為大家分享一篇Java 異常處理的誤區(qū)和經(jīng)驗(yàn)總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • SpringBoot+Mybatis使用Mapper接口注冊(cè)的幾種方式

    SpringBoot+Mybatis使用Mapper接口注冊(cè)的幾種方式

    本篇博文中主要介紹是Mapper接口與對(duì)應(yīng)的xml文件如何關(guān)聯(lián)的幾種姿勢(shì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Spring JdbcTemplate實(shí)現(xiàn)添加與查詢(xún)方法詳解

    Spring JdbcTemplate實(shí)現(xiàn)添加與查詢(xún)方法詳解

    JdbcTemplate是Spring框架自帶的對(duì)JDBC操作的封裝,目的是提供統(tǒng)一的模板方法使對(duì)數(shù)據(jù)庫(kù)的操作更加方便、友好,效率也不錯(cuò),這篇文章主要介紹了Spring?JdbcTemplate執(zhí)行數(shù)據(jù)庫(kù)操作,需要的朋友可以參考下
    2022-11-11
  • Java面試題沖刺第十八天--Spring框架3

    Java面試題沖刺第十八天--Spring框架3

    這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于Spring框架的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java中性能優(yōu)化的35種方法匯總

    Java中性能優(yōu)化的35種方法匯總

    很多同學(xué)在日常寫(xiě)Java的時(shí)候很少去關(guān)心性能問(wèn)題,但是在我們寫(xiě)代碼的過(guò)程中必須考慮到性能對(duì)程序的影響。小到我們使用位運(yùn)算來(lái)實(shí)現(xiàn)算術(shù)運(yùn)算,大到我們對(duì) Java 代碼的總體架構(gòu)設(shè)計(jì),性能其實(shí)離我們很近。本文介紹了Java中性能優(yōu)化的35種方法,需要的朋友可以參考下。
    2017-01-01
  • 新手了解java 集合基礎(chǔ)知識(shí)

    新手了解java 集合基礎(chǔ)知識(shí)

    今天小編就為大家分享一篇關(guān)于Java集合總結(jié),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧,希望對(duì)你有所幫助
    2021-07-07

最新評(píng)論