1. 程式人生 > >springmvc返回值、資料寫到頁面、表單提交、ajax、重定向

springmvc返回值、資料寫到頁面、表單提交、ajax、重定向

轉發的方法,轉發到form.jsp實驗是在前一篇文章的專案上做的;

資料寫到頁面

後臺往前臺傳資料

TestController新增
	/**
	 * 方法的返回值採用ModelAndView, new ModelAndView("index", map);,
	 * 相當於把結果資料放到request裡面
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/toPerson4.do")
	public ModelAndView toPerson4() throws Exception{
		Person person = new Person();
		person.setName("jerome");
		person.setAge(22);
		person.setAddress("nanan");
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date date = format.parse("2012-12-21");
		person.setBirthday(date);
		
		Map<String,Object> map = new HashMap<String, Object>();
		map.put("p", person);
		return new ModelAndView("jsp/index",map);
	}
頁面接收:index.jsp
  <body>
	   <h5>${p.name }</h5>
	   <h5>${p.age }</h5>
	   <h5>${p.address }</h5>
	   <h5><fmt:formatDate value="${p.birthday }" pattern="yyyy-MM-dd"/></h5>
  </body>
在jsp引入fmt標籤庫* 文章包含被禁用的url,無法儲存和釋出。 太坑了,這個連結也遮蔽~ 
重啟tomcat訪問:http://localhost:8080/springmvc-2/test/toPerson4.do
輸出資訊正確;

另外一種方式: 

	/**
	 * 直接在方法的引數列表中來定義Map,這個Map即使ModelAndView裡面的Map
	 * 由檢視解析器統一處理,統一走ModelAndView的介面
	 * 也不建議使用
	 * @param map
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/toPerson5.do")
	public String toPerson5(Map<String,Object> map) throws Exception{
		Person person = new Person();
		person.setName("jerome");
		person.setAge(22);
		person.setAddress("nanan");
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date date = format.parse("2012-12-21");
		person.setBirthday(date);
		
		map.put("p", person);
		return "jsp/index";
	}
重啟tomcat訪問:
http://localhost:8080/springmvc-2/test/toPerson5.do
輸出正確;

建議使用方式:

	/**
	 *在引數列表中直接定義Model,model.addAttribute("p", person);
	 *把引數值放到request類裡面去,建議使用
	 * @param map
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/toPerson6.do")
	public String toPerson6(Model model) throws Exception {
		Person person = new Person();
		person.setName("jerome");
		person.setAge(22);
		person.setAddress("nanan");
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date date = format.parse("2012-12-21");
		person.setBirthday(date);
		//把引數值放到request類裡面去
		model.addAttribute("p", person);
		return "jsp/index";
	}


重啟tomcat訪問:
http://localhost:8080/springmvc-2/test/toPerson6.do
輸出正確資料;

不需要頁面跳轉:ajax

後臺方法:
在TestController加
	/**
	 * ajax的請求返回值型別應該是void,引數列表裡直接定義HttpServletResponse,
	 * 獲得ProntWriter的類,最後可把結果寫到頁面
	 * 不建議使用
	 * @param name
	 * @param response
	 */
	@RequestMapping("/ajax.do")
	public void ajax(String name, HttpServletResponse response) {
		String result = "hello " + name;
		try {
			response.getWriter().write(result);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
前臺呼叫 新建ajax.jsp
<input id="myButton" type="button" value="click">
Webroot新建js資料夾將jquery拷貝進來;
引進來jquery 和寫js指令碼:
  <script type="text/javascript" src="js/jquery-1.6.2.js"></script>
  <script type="text/javascript">
	$(function(){
			$("#myButton").click(function(){
				$.ajax({
					url:"test/ajax1.do",
					type:"post",
					dataType:"text",
					data:{
						name:"zhangsan"
					},
					success:function(responseText){
						alert(responseText);
					},
					error:function(){
						alert("system error");
					}
				});
			});
		});
  </script>

後臺寫一個轉發:
	@RequestMapping("/toAjax.do")
	public String toAjax() {
		return "jsp/ajax";
	}

重啟tomcat 訪問 
http://localhost:8080/springmvc-2/test/toAjax.do
Click,彈出hello zhangsan,成功;

以上方法不建議使用,建議使用:

	/**
	 * 直接在引數的列表上定義PrintWriter,out.wrote(result);
	 * 把結果寫到頁面,建議使用
	 * @param name
	 * @param out
	 */
	@RequestMapping("/ajax1.do")
	public void ajax1(String name, PrintWriter out) {
		String result="hello1 "+name;
		out.write(result);
	}
修改ajax.jap頁面的,js指令碼,跳轉的url是
url:"test/ajax1.do",
重啟tomcat 訪問  
http://localhost:8080/springmvc-2/test/toAjax.do
Click
彈出hello1 zhangsan;

表單:

拷貝一份index,起名form.jsp
  <body>
   <form action="test/toPerson7.do" method="post">
	   	name:<input name="name" type="text"><br/>
	   	age:<input name="age" type="text"><br/>
	   	address:<input name="address" type="text"><br/>
	   	birthday:<input name="birthday" type="text"><br/>
   	<input type="submit"><br/>
  </form>
TestController
	@RequestMapping("/toPerson7.do")
	public String toPerson7(Person person) {
		System.out.println(person);
		return "jsp/index";
	}
轉發的方法,轉發到form.jsp
	@RequestMapping("/toForm.do")
	public String toForm() {
		return "jsp/form";
	}
重啟tomcat 訪問:
http://localhost:8080/springmvc-2/test/toForm.do
提交跳轉到
http://localhost:8080/springmvc-2/test/toPerson7.do
控制檯輸出
Person [name=aa, address=asdf, birthday=Tue Jun 03 00:00:00 CST 2014, age=22]

請求方式的指定:

後臺可以指定提交方法,如果前臺不是用的同一種提交方式 將報錯;
	/**
	 * @RequestMapping(value="/toPerson7.do",method=RequestMethod.POST)
	 * 可以指定請求方式,前臺就必須要以它制定好的方式來訪問,不然會出現405錯誤
	 * @param person
	 * @return
	 */
	@RequestMapping(value="/toPerson7.do",method=RequestMethod.POST)
	public String toPerson7(Person person) {
		System.out.println(person);
		return "jsp/index";
	}
Form.jap的method修改為get和post測試;

重定向:

同一個 controller

	/**
	 * 重定向:controller內部重定向,redirect:加上同一個controller中
	 * 的requesMapping的值
	 * @return
	 */
	@RequestMapping("/redirectToForm.do")
	public String redirectToForm() {
		return "redirect:toForm.do";
	}
重啟tomcat 訪問:
http://localhost:8080/springmvc-2/test/redirectToForm.do 
重定向到
http://localhost:8080/springmvc-2/test/toForm.do

Controller之間的重定向:

拷貝一份TestController改成TestController1
留這個
@Controller
//用來標註當前類是springmvc的控制層的類
@RequestMapping("/test1")
//controller的唯一標識或者名稱空間
public class TestController1 {
	
	@RequestMapping("/toForm.do")
	public String toForm() {
		return "jsp/form";
	}

}
TestController 新增
	/**
	 *  controller之間的重定向:必須要指定好controller的名稱空間再
	 *  指定requestMapping的值,redirect:後必須要加/,是從根目錄開始,
	 *  否則就從當天test找了
	 * @return
	 */
	@RequestMapping("/redirectToForm1.do")
	public String redirectToForm1() {
		return "redirect:/test1/toForm.do";
	}

重啟tomcat 訪問

重定向到

http://localhost:8080/springmvc-2/test/toForm.do

jquery-1.6.2.js下載:http://pan.baidu.com/s/1o6nwWP0
專案下載:http://pan.baidu.com/s/1pJwix2V這篇文章寫得不錯可以看看:http://elf8848.iteye.com/blog/875830/

相關推薦

提交form---修改密碼 ajaxjQuery

改密 func 表單 eset password servlet 驗證 確認密碼 密碼 <form id ="password" method="post">   <table > <tr>   <td>原密碼:<

提交Post方法Get方法背後的祕密

        表單用來接受使用者的輸入,並將使用者的輸入以“name=value值對”集合的形式提交到伺服器進行處理。那麼表單是怎樣將資料提交到伺服器的?伺服器是怎樣對錶單資料進行處理的?下面我將為大家揭開表單提交背後的祕密 表單用<form></form> 標記定義,表單

提交方式getpost

  表單的標籤: get用於查詢,post用於提交。 get方法: login頁面: <form>標籤是表單,<table>標籤是表格。裡面紅色部分,如type,name等,是屬性。 還需要新建一個  dologin.jsp 作為login頁面的

提交Post方法Get方法

表單大家都很熟悉,上網的時候經常會遇到表單         表單用來接受使用者的輸入,並將使用者的輸入以“name=value值對”集合的形式提交到伺服器進行處理。那麼表單是怎樣將資料提交到伺服器的?伺服器是怎樣對錶單資料進行處理的?下面我將為大家揭開表單提交背

Action如何接收jsp頁面form提交資料

struts2中的Action接收表單傳遞過來的引數有3種方法: 如,登陸表單login.jsp:  <form action="login" method="post" name="form1">  使用者名稱:<s:textfield name="us

jsp頁面from提交到資料庫亂碼問題

1.jsp頁面設定 ①jsp頁面頂部: 裡面的pageEncoding設為utf-8. 2.連線資料庫設定 ②  ?useUnicode=true&characterEncoding=utf-8    這句不要忘了加,很可能就是這個地方導致

JAVA Web頁面F5重新整理重複提交form問題(後端Servlet定向)

寫在前面:學習JAVA WEB,在提交新增表單後F5,form表單會不停的提交,困擾了我很久,也試過網上很多方法,可能是我使用方法不對,一直不成功。 其中程式碼為: int result = sf.add(stuno, pwd, stun

springmvc返回資料頁面提交ajax定向

轉發的方法,轉發到form.jsp實驗是在前一篇文章的專案上做的;資料寫到頁面後臺往前臺傳資料TestController新增 /** * 方法的返回值採用ModelAndView, new Mod

SpringMVC的學習(五)——SpringMVC返回SpringMVC實現檔案上傳

一、SpringMVC返回值 ①json資料 訪問控制器返回Json型別資料 匯入對應的JSON包 支援: jackson : jackson-databind/jackson-annotations/jack-core gson: gson 注意:  jack

jsp form提交獲取返回資料(也可用來上傳檔案圖片)

function fileImport() {        var form = $("#表單id");          var options  = {               url:"表單提交地址",                 type:'post

Vue.js實現雙向資料繫結(自動賦自動取

1、使用Vue.js實現雙向表單資料繫結,例子 <!--html程式碼--> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta

springmvc + freemarker 解決提交頁面顯示亂碼 的問題

其實,網上有很多的解決亂碼的,不過都只能在某些地方起作用,比如給spring增加一個編碼過濾器,能夠解決表單提交(所有以post方式提交的)的亂碼問題,比如給tomcat設定預設的url編碼,能夠解決get請求的亂碼問題,現在我將這兩者結合起來,能夠完美解決所有亂碼問題(至

大型分布式項目項目實戰Springmvc+Spring+Mybatis+Maven+CMS+Redis+Solr+Linux+Nginx+點登錄分布式緩存負載均衡視頻課程

edi mina img solr 技術 性能提升 登錄 rom nginx * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架構師、集群、高可用、高可擴 展、高性能、高

SpringMVC (八)SpringMVC返回類型之返回Void

控制器 idea click www. bject ucc lang sca gpo SpringMVC的返回值類型有MedelAndView,String,void,Object數值型,集合類型等等 前兩種我們之前寫案例的時候一直在用,現在看一下返回值是void的 返回值

通過form的action屬性提交並接收處理返回的方法(頁面不跳轉)

通過form的action屬性提交表單,這個很容易。但是,由於這種方式是同步提交,所以會導致頁面跳轉,且不好拿到返回值。一般都用ajax代替。 有些情況ajax是不能使用的,嚴格的說是不好使用的。例如檔案上傳功能。 <input type = "file"> 通過fo

JAVA程式設計122——SpringMVC返回型別控制/跳轉方式/JSON響應

一、目錄結構 二、SpringMVC返回值型別控制/跳轉方式/JSON響應 1.建立UserController.java package com.mollen.controller; import com.mollen.bean.User; import

Ajax(form檔案上傳請求頭之contentTypeAjax傳遞json資料

form表單檔案上傳 上菜 file_put.html <form action="" method="post" enctype="multipart/form-data"> {# 這裡必須要請求頭格式才能把上傳檔案的物件傳過去 enctype="multipart/form-

cpp指標 引用做返回資料研究附圖

#pragma once struct DATA { int num; char name[20]; float chinese; DATA():num(1001),name(" "),chinese(100) { } DATA(int num1,char* name1,float chi

使用form提交登陸資料,控制器返回另一個頁面

使用form表單提交登陸資料,在form的action中填寫資料提交的控制器路徑, 如:action="${pageContext.request.contextPath}/LoginController/login.do"; 在控制器中返回新介面的重定向地址,如,在LoginControl

微信小程式學習筆記(三)提交PHP後臺資料互動

【form表單提交】 form.wxml: <form bindsubmit="formSubmit" bindreset="formReset"> <view> 暱稱:<input type="text" name="nic