① struts2怎樣從jsp頁面傳值到action中
jsp頁面跟通常的html傳值一樣 通常有兩種方式
1.form表單傳值
2.url方式傳值
通常後台接受前端傳值 都是用的request.getParameter("username")
但是在struts框架下 可以用set方法讓action自動接收 也更方便
所以 action接收值也有兩種方式
1.request.getParameter("username")
2.set
下面記錄多種組合方式,大家可以根據相應的情況選擇使用:
方式一 jsp中form傳值username,password, action中set方法接收
[java]view plain
<%@taglibprefix="s"uri="/struts-tags"%>
[java]view plain
<formaction="getIp/login"method="post"name="form1">
用戶名:
<s:textfieldname="username"/>
<br/>
密碼:
<s:passwordname="password"/>
<br/>
<s:submitvalue="提交"/>
</form>
login.jsp
[java]view plain
<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"
+request.getServerName()+":"+request.getServerPort()
+path+"/";
%>
<%@taglibprefix="s"uri="/struts-tags"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>loginpage</title>
</head>
<body>
<formaction="getIp/login"method="post"name="form1">
用戶名:
<s:textfieldname="username"/>
<br/>
密碼:
<s:passwordname="password"/>
<br/>
<s:submitvalue="提交"/>
</form>
</body>
</html>
loginAction.java
[java]view plain
packageaction;
importcom.opensymphony.xwork2.ActionSupport;
{
/**
*登錄
*/
=-6797327769546503535L;
privateStringusername;
privateStringpassword;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringexecute(){
System.out.println("username:"+username);
System.out.println("password:"+password);
returnSUCCESS;
}
}
spring文件
action.xml
[java]view plain
<?xmlversion="1.0"encoding="utf-8"?>
<struts>
<packagename="getIp"extends="json-default"namespace="/getIp">
<!--<actionname="testJson"class="testAction">
<resulttype="json"></result>
</action>
<actionname="testJsp"class="testAction">
<resultname="success">/index.jsp</result>
</action>-->
<actionname="login"class="login">
<resulttype="json"></result>
</action>
</package>
</struts>
② jsp頁面怎麼跳轉到action方法中
1、如果想在action中獲得值,就必須先從jsp跳轉到action,然後action返回的時候被struts攔截,匹配result時,就可以控制跳轉到另外一個jsp,這當中的過程看起來很長,但是對於計算機來說是非常短暫的,是經過action才跳轉到第二個jsp。
2、還有一種方式是用 ajax 將要傳遞給action的數據以url+ 參數 + 參數值 的方式(即get方式)傳遞給後台action,但是這個action不能匹配struts當中的result,否則會報錯,最好是定義void方法來獲得頁面數據,request取值,response響應
③ struts2在jsp頁面上怎麼訪問action
如果你要引用action執行後的頁面,就用s:action 加上executeResult="true"這個屬性就可以了 <s:action id="這可以不要,id是jsp直接引用action里用的" name="action名" executeResult="true"> <s:param name="" value=""/>這是action的參數 </s:action>
④ 基於struts2的JSP頁面執行action跳轉新的jsp頁面之後,新的jsp頁面如何自動顯示出執行action後的內容
不是太理解你的意思,
信息可以存在session中,在jsp頁面里讀出來
action:
public String list() {
try {
List<Voter> list = service.getAll();
ActionContext.getContext().getSession().put("voterList", list);
return "list";
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}
list.jsp:
<c:forEach var="voter" items="${voterList }" varStatus="st">
<tr>
<td>${voter.userId }</td>
<td>${voter.userName }</td>
</tr>
</c:forEach>
struts.xml:
<action name="user_*" class="wangli.action.UserAction" method="{1}">
<result name="login">login.jsp</result>
<result name="loginSuccess" type="redirectAction">user_list</result>
<result name="list">/WEB-INF/list.jsp</result>
<result name="registerSuccess">registerSuccess.jsp</result>
</action>
⑤ 在Struts2中,怎麼由jsp跳轉到action中
哥們,你的理解有很大問題呀
不 jsp 跳到 action 取值
而是你應該訪問action 然後返回你的jsp才能有值。
幫你梳理一下,什麼是訪問吧,呵呵
首先,瀏覽器訪問一個地址,被你的servlet 獲取,至於是不是訪問jsp 還是訪問action這個一般看你配置文件怎麼配了,當然不會有人將action的標志寫為 「jsp」,一般寫.action 或者.do
那麼如果你的攔截器也沒有攔截jsp的話,(不明白攔截器可以忽略本段),會根據你的後綴名判斷你要訪問什麼。
其實不管你訪問什麼,都可以認為最後通過 response 返回了一個字元串,返迴文件不算。
那麼這個字元串的構成不外乎有幾種
1,全部靜態,一般是 html,即直接指向一個靜態頁面,當然也可以通過actiong 轉向一個html
2,全部動態,由java拼接一個字元串,返回,ajax請求一般是這種情況。當然,若全天是一個submit式提交,希望返回一個頁面,那麼你的字元串將被當作html代碼展示。
3,半動態,也就是jsp方式,jsp中的html部分是靜態不動的,其他jsp標簽,如你寫的s標簽(s標簽是strut的標簽,說白了是jsp標簽的一種),jsp標簽會根據他的定義執行對應的java代碼進行拼裝。然後將拼裝好的部分與原來的html部分結合,返回給瀏覽器。
無論是哪種,瀏覽器拿到的都是 靜態的,也就是瀏覽器並不知道你後台做了什麼,只是拿到一個已經拼裝好了的html,(這個html原來可能就不需要拼裝對應第一種,全部都是拼裝的對應第二種,一半是拼裝的對應第三種)
但是你直接訪問jsp的問題是,當前sesson中沒有你寫的pages.pageList,所以啥也沒有。
所以要在頁面上顯示列表有2種方案,這兩種方案都很常見。
1,訪問一個action,action先通過java取得值,將值付給某些變數,對你的來說就是pages.pageList,再將請求重定向到你的jsp,那麼jsp中s標簽就被拼裝成你要值返回了前台。
頁面上就有 表格了。
2,訪問一個jsp,而這個jsp中沒有你現在寫的s標簽,但是當jsp全部載入完成後,通過ajax向後台申請數據,再通過js(javascript)修改你前台的頁面,展示出你要的結果,
隨著這些年的發展,第二種方案越來越流行,其實怎麼用還是要看自己。