① struts2怎麼向jsp傳遞參數
1、瀏覽器往Action傳遞參數:
在Action中設置屬性,並為屬性設置get/set方法。傳遞參數時按照屬性的名字賦值即可。如xxx?name=aa
取值用request.getPrameters("屬性名「);
public class UserAction {
private String name;
private User user;
public String userAdd() {
System.out.print(user.getName());
System.out.print(name);
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
註:struts2不會使用單例模式,因此每次的請求都是new 一個新對象。
2、Action 往瀏覽器界面傳遞參數:
方式有三種:
第一種:直接給Action 屬性(有get/set方法)賦值 ,JSP中用
<s:property value="OGNL表達式"/> 取值,注意返回結果類型為forward
例如:
<s:property value="name"/>
<s:property value="user.name"/>
第二種:通過ActionContext傳值,在Action中所調用的方法中加入:
ActionContext.getContext().put("key", "value");
JSP中用<s:property value="#key"/>取值
第三種:通過request、session 傳值。Action方法中通過取得HttpervletRequest 、HttpSession 和 Map對象設置值,
例如:
ServletActionContext.getRequest().setAttribute("arg0", "value");
ServletActionContext.getRequest().getSession().setAttribute("arg0", "value");
ActionContext.getContext().getSession().put("key", "value");
② 如何在jsp頁面中使用struts2標簽
在jsp頁面中使用struts2標簽的方法是在jsp頁面上引入<%@ taglib prefix="s" uri="/struts-tags" %>的struts2標簽庫。
拓展:
1、Struts2是一個基於MVC設計模式的Web應用框架,它本質上相當於一個servlet,在MVC設計模式中,Struts2作為控制器(Controller)來建立模型與視圖的數據交互。Struts 2是Struts的下一代產品,是在 struts 1和WebWork的技術基礎上進行了合並的全新的Struts 2框架。其全新的Struts 2的體系結構與Struts 1的體系結構差別巨大。
2、Struts 2以WebWork為核心,採用攔截器的機制來處理用戶的請求,這樣的設計也使得業務邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產品。雖然從Struts 1到Struts 2有著太大的變化,但是相對於WebWork,Struts 2的變化很小。
3、2000年5月發展至今,Struts1已經成為了一個高度成熟的框架,不管是穩定性還是可靠性都得到了廣泛的證明。市場佔有率超過20%,擁有豐富的開發人群,幾乎已經成為了事實上的工業標准。但是隨著時間的流逝,技術的進步,Struts1的局限性也越來越多地暴露出來,並且制約了Struts1的繼續發展。
③ java web 開發中的前後台交互方法
前後台交互其實都是通過servlet來實現的。
即servlet寫數據給前台,前台展示版。權前台提交數據,servlet處理。
框架只是封裝了servlet,提供了更加簡便,更加好維護的集成模式。如果你很感興趣框架的實現方式的話,你可以看看nutz的源代碼。
nutz是國產的,有非常好的文檔和注釋。
④ struts2中如何在jsp頁面中用js取得action中傳過來的值
使用ajax發起非同步請求將數據傳遞給action即可
js代碼如下:
<scripttype="text/javascript"src="js/jquery-1.8.3.min.js"></script>
<scripttype="text/javascript">
$(document).ready(function(){
//按鈕點擊事件
$("#btn").click(function(){
//發起非同步請求
//參數一:請求的地址;參數二:傳遞的參數;參數三:回調函數,接收伺服器回傳的數據
$.post("user.action",{"name":$("#uname").val()},function(data){
//顯示非同步回傳的數據
if(data=="ok"){
alert("成功");
}else{
alert("失敗");
}
});
});
});
</script>
java代碼如下:
{
privateStringname;//接收客戶端傳遞的數據
privateInputStreaminputStream;//響應客戶端數據的流對象
//處理請求的方法
publicStringexecute(){
Stringresult="no";
if(name.equals("admin")){
result="ok";
}
inputStream=newByteArrayInputStream(result.getBytes());
returnSUCCESS;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
(){
returninputStream;
}
(InputStreaminputStream){
this.inputStream=inputStream;
}
}
struts.xml中關鍵代碼:
<packagename="demo"namespace="/"extends="struts-default">
<actionname="user"class="cn.action.UserAction">
<resulttype="stream">
<paramname="inputName">inputStream</param>
</result>
</action>
</package>
⑤ 怎麼把action中的值傳到jsp頁面
對於如何把struts2的action中的值傳到jsp頁面中,主要的方法有種:
使用轉發視圖利用request域中儲存所需的值
使用重定向時存儲數據進入session使其在jsp中可以獲得
下面,讓我們分先後的講解這2種方法!
准備步驟:
jsp頁面隨時准備使用el表達式獲取request中的值,
action中的值分2種,一種是在方法中誕生的,作用域也是方法內;一種是定義為類成員(並帶有get,set或者為public),此種方式只需賦值
2.操作流程:
對於action的類屬性,直接為其賦值(例如 message="Test";),然後在jsp頁面中使用el表達式取出這個值(${message },直接以類屬性名稱取值即可,el默認的取值域就是request,struts2會將action的所有帶有get,set的屬性自動的放入request域中【當然你也可以使用struts的標簽庫,不推薦】)
對於action中方法中產生的數據,又不想為其在action類中定義對應的成員,我們可以手動的將其存放進入request域中,在struts2中,有2種方式可以將數據存入request中,一種是通過ActionContext.getContext().put("message",message);直接放入將數據request域中,不獲取request本身,獲取其中的Map;另一種是使用ServletActionContext.getRequest().setAttribute("message",message);直接取得request對象,再使用request對象的方法setAttribute()方法存入數據!將數據存入request中後,jsp中取值並無差別(同上)!
准備步驟:同上!不同處是不管要存入的數據是不是類的屬性,我們都必須在方法中進行處理才能將數據存入session,而不能依靠struts2自動幫我們搞定!
操作流程:
不管數據是哪裡誕生的,得到數據後!比如為message;同上的第二種情況:也有2中方式將數據存入到session中:
a.在方法中通過ActionContext().getContext().getSession().put("message",message);首先獲取session中的map,再使用Map介面的方法put()存入數據
b.在方法中通過ServletActionContext().getRequest().getSession().setAttribute("message",message);首先獲取session對象,再使用session對象的setAttribute方法將數據存入session域
最後,不管那種方式將數據存入到session中,我們都可在jsp頁面中獲取session中的值,例如${sessionScope.message }
不論如何,總是將數據存入tomcat提供的幾個存數據的域中(request,session,application),然後在頁面通過EL表達式獲取即可!