struts2中把action中的值传递到jsp页面的例子
例子:
RegistAction的代碼:
package com.wss.action;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.wss.Dao.School; import com.wss.Dao.User; import com.wss.Dao.UserDao;public class RegistAction extends ActionSupport {public RegistAction(){System.out.println("Initialization RegistAction....");}//user有Get和Set方法,是類成員,只需要賦值就可以private User user =new User();//private User user;public User getUser() {System.out.println("Getting the getUser");return user;}public void setUser(User user) {System.out.println("Setting the setUser");this.user = user;} //school有Get和Set方法,是類成員,只需要賦值就可以private School school;public School getSchool() {System.out.println("Getting the getSchool");return school;}public void setSchool(School school) {System.out.println("Setting the setSchool");this.school = school;}//company有Get和Set方法,是類成員,只需要賦值就可以private String company;public void setCompany(String company){System.out.println("Setting the company");this.company=company; }public String getCompany(){return this.company;}public String execute() throws Exception{UserDao ud =new UserDao();//ActionContext ctx = ActionContext.getContext();//HttpServletRequest request = (HttpServletRequest) ctx.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST); //request.setAttribute("company", this.company); System.out.println("The company is "+this.company+" The name is "+this.user.getName()+" The address is "+this.user.getAddress());System.out.println("The school name is "+this.school.getName()+" The city is "+this.school.getCity()+" The department is "+ this.school.getDepartment());
ActionContext.getContext().put("message","注冊(cè)成功");ServletActionContext.getRequest().setAttribute("school","北京大學(xué)");//if(ud.regist(user)!=0){ ActionContext.getContext().getSession().put("welcome", "歡迎訪問");ServletActionContext.getRequest().getSession().setAttribute("city", "北京,上海,深圳");String label="標(biāo)簽內(nèi)容";ActionContext.getContext().put("label", label);this.addFieldError("success", "成功");return SUCCESS;//}//this.addFieldError("error", "注冊(cè)失敗");//return ERROR; } }
regist.jsp代碼:
login.jsp代碼:
運(yùn)行結(jié)果:
?
注意:
(1)發(fā)現(xiàn)el表達(dá)式不管是通過:ActionContext.getContext().put("message",message);
?????????????????????????????????ServletActionContext.getRequest().setAttribute("messae",message);把類屬性數(shù)據(jù)或者方法數(shù)據(jù)存儲(chǔ)到request中,都能用el表達(dá)式獲得。
(2)方法中的數(shù)據(jù)值用:
????????ActionContext.getContext().getSesstion().put("message",message);
????????ServletActionContext.getRequest().getSesstion().setAttribute("message",message);這兩種方法把數(shù)據(jù)存儲(chǔ)到session中,都可以用el表達(dá)式獲得,并且不需
??????? 要${sessionScope.message }中的sessionScope也可以獲取數(shù)據(jù)。
(3)同時(shí)struts標(biāo)簽可以對(duì)類屬性值(自帶有set和get就是默認(rèn)會(huì)放入request中)、沒有set和get的類屬性值編寫代碼放入request中、方法中的值用代碼放入request中
?????? 都可以用struts自帶的標(biāo)簽<s:property value="message"/>獲取數(shù)據(jù)。
???????但是struts標(biāo)簽對(duì)放入session中的數(shù)據(jù)不能顯示。
?????? 如果打開瀏覽器重新輸入http://localhost:8080/ShopDemo/,那么用session保存的數(shù)據(jù)仍然存在。
??????瀏覽器同一個(gè)標(biāo)簽,但是前進(jìn)和退回,在注冊(cè)頁不輸入任何的內(nèi)容,但是當(dāng)點(diǎn)擊注冊(cè)時(shí)候,用ActionContext,ServletActionContext的方法通過request或者session的方法保存的數(shù)據(jù),仍然存在;但是通過struts2自動(dòng)將action的所有帶有g(shù)et,set(這兩個(gè)方法必須同時(shí)有)的屬性放入request域中的數(shù)據(jù),沒有了,顯示空值。
?request 和sesstion保存數(shù)據(jù)的作用域,時(shí)間域,區(qū)別和聯(lián)系?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Berryxiong/p/6115958.html
總結(jié)
以上是生活随笔為你收集整理的struts2中把action中的值传递到jsp页面的例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux:目录操作
- 下一篇: C#开发微信门户及应用(25)-微信企业