刚接触SSH,确实感觉到他的强大和便捷。在学习过程中遇到了一些困惑,解决后想要写写,在自己以后的编程中尽量避免,并帮助一些菜鸟朋友快速入门。 Struts2前台后台的数据传递问题,我要分两方面说,首先,我要说后台数据如何通过前台用户输入来获取的。至于Struts2跳转流程这里不做介绍。首先,Struts利用Action来接收前台数据,他继承了ActionSupport类。在前台中,假设有username和password两个属性,如: <body> 那么在对应Action中,如LoginAction中,想要接收用户输入的信息,就必须有和前台接收参数同名的属性,按上述代码,LoginAction中必须有username和password两个属性。其次,为了能够获取属性,还要为这两个属性设置特有的get()set()方法,这样Struts2才能调用这两个方法对属性获取。第三,在获取时,直接写属性名就可以。当然,LoginAction要实现ActionSupport。如: public String execute(){ 这样在前台用户输入的信息就能被后台获取了。 第二我要说的是如何在前台获取后台的数据。首先,要用Action访问Servlet API。这里不作为重点,只提供一种方法,即ServletActionContext访问Servlet API。 public String list(){ 用ActionContext.getContext()方法得到PageContext对象。ct.put()方法是将list链表放到名为“box”的里面。box名是任意的。这样就可以在前台获取了。 <table> 上面用到Struts2标签,这里不做解释,请查API。iterator用来遍历集合。value值就是后台用put()方法放入的名称,上题是box。property是输出单一属性,value为输出内容。这里重点说一下OGNL表达式。 OGNL为表达式,用来显示对象属性。用OGNL显示属性有两种: 1、当访问OGNL的Stack context里根对象的属性时,可以省略对象名。 如:若foo为context的根对象,假设foo有blah属性,前台获取该属性时,只需写: blah;//调用了foo的getBlah()方法返回属性值。 2、当访问OGNL的Stack context里非根对象的属性时,要用#对象名.属性访问。 如:#person.name 下面的问题就是如何确定哪些是OGNL的Stack context里根对象,进而选择用哪种方法。 |
|