① 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表达式获取即可!