- 从浏览器传至后台三种情况
/** * 1.ModelDriven接口传值 * 2.set get 方法传值 * 3.对象导航传值 */ private Cal cal=new Cal(); private String num1; private Cal cal2=new Cal(); public String getNum1() { return num1; } public void setNum1(String num1) { this.num1 = num1; } public Cal getCal2() { return cal2; } public void setCal2(Cal cal2) { this.cal2 = cal2; } public String execute() { System.out.println("ModelDriven传值:"+"num1"+cal.getNum1()+" num2:"+cal.getNum2()); System.out.println("get set传值:"+this.num1); System.out.println("对象导航传值:"+"num1"+cal2.getNum1()+" num2:"+cal2.getNum2()); return null; } @Override public Cal getModel() { // TODO Auto-generated method stub return cal; }
请求数据:
结果:
如果modeldriven和get set 同时使用 而属性名重复的话会造成 get set
赋值为空的情况因为ModelDriven中优先级更高
-
从后台传至浏览器传值
*1.传统作用域向jsp传值
* 与j2ee容器交互
* 1.非注入
* 耦合
* 解耦
* 2.注入式
*耦合
* 解耦
* 2.值栈传值
1注入式需要实现ServletRequestAware,RequestAware,ServletResponseAware等接口
ServletRequestAware等接口是高耦合的方式
private HttpServletRequest req;
@Override
public void setServletRequest(HttpServletRequest arg0) {
//使用此request将值放置此作用域中
this.req=arg0;
}
RequestAware等接口是低耦合方式
@Override
public void setRequest(Map<String, Object> map) {
//可以直接将值存放于此集合中 和request.setattribute是一样的
map.put("rs", "4567890");
}
- ServletRequestAware这个接口中的方法是setServletRequest(HttpServletRequest request) 可以获得这次请求的request对象
2、RequestAware这个接口中的方法是setRequest(Map request) 它只能够获得这次请求中包含request对象中全部attributes的一个map
-
非注入式
高耦合使用方式直接可以获得到request对象
ServletActionContext.getRequest()
低耦合的使用方式(推荐使用)
// 获取request:
Map request = ActionContext.getContext().get("request");
//
// 往request里封装数据
//
request.put("name", value);
// 在前台就可以用request.getAttribute("name");
获取session
Map session = ActionContext.getContext().getSession();
// 将数据封装到session中
session.put("name", value);
//在前台页面上用sessionScope.getAttribute("name");得到session里面封装的值。
得到session、request有点区别,得到request用的是get("reqeust"),得到session用的是getSession()
然后还可以这么使用
ActionContext ctx = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);
//用法就和Servlet中的request、response用法一样
-
值栈传值
-
//直接定义一个object 保存值然后设置其getset方法即可 private Cal cal=new Cal(); private Object res; public Object getRes() { return res; } public void setRes(Object res) { this.res = res; }