1. 程式人生 > >struts2學習筆記(8)-------struts2的ajax支持

struts2學習筆記(8)-------struts2的ajax支持

net fcm utf-8 asc uri () nal extends keyword

struts2支持一種stream類型的Result,這樣的類型的Result能夠直接向client瀏覽器響應二進制,文本等。

我們能夠再action裏面生成文本響應,然後在client頁面動態載入該響應就可以。

直接看樣例:

public class LoginAction {
	private String user;
	private String pass;
	private InputStream inputStream;
	
	public InputStream getInput(){
		return inputStream;
	}
	
	
	public String getUser() {
		return user;
	}



	public void setUser(String user) {
		this.user = user;
	}



	public String getPass() {
		return pass;
	}



	public void setPass(String pass) {
		this.pass = pass;
	}



	public String login() throws UnsupportedEncodingException{
		inputStream = user.equals("zhangsan")&&pass.equals("123")?

new ByteArrayInputStream("恭喜你,登錄成功".getBytes("utf-8")): new ByteArrayInputStream("登錄失敗".getBytes("utf-8")); return "success"; } }

這個Action的核心主要是getInput方法,它返回的二進制流將直接輸出給瀏覽者。這將使用stream類型的result來完畢。註意:這個getInput方法名能夠隨便換,但必須是這樣的類型get+"XXX"(應該是反射機制所用吧),這個“XXX”必須跟param為inputName的值相應!

!!

接下來看struts.xml的配置:

<?xml version="1.0" encoding="UTF-8"?

> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <package name="user" extends="struts-default"> <action name="loginAction" class="com.sinosoft.epicc.action.LoginAction" > <result name="success" type="stream"> <param name="contentType">text/html</param> <param name="inputName">input</param> </result> </action> </package> </struts>


然後使用jquery封裝的ajax調用:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
<%
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 ‘login.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">
	-->
	<script	type="text/javascript" src="js/jquery-1.7.1.js"></script>
	<script type="text/javascript">
		function login(){
		
			var userName = $("#user").val();
			var password = $("#pwd").val();
			$.ajax({
			
				url : ‘loginAction!login‘,
				data : {
					user:userName,
					pass:password
					},
				type : ‘post‘,
				success : function(data){
				
					$("#label").html(data);
				},
				error : function(){}
			
			});	
		
		}
	</script>
  </head>
  
  <body>
	<div>username:<input type="text" name="userName" id="user"/><span id="label"></span></div>
	<div>密碼:<input type="password" name="userPwd" id="pwd"></div>
	<div><input type="button" value="登錄" onclick="login();" ></div>
  </body>
</html>

執行結果例如以下:

技術分享


比較簡單~~~~還用過一種ajax返回的方法,是直接response.write,這個也比較經常使用

struts2學習筆記(8)-------struts2的ajax支持