java接口重定向到接口参数_Struts2——结果跳转方式配置(重定向,转发<默认>,重定向到方法,重定向到转发),获取servlet的内些API(request,servletcontext......

一、结果跳转方式

1)转发(默认)

/hello.jsp

2)重定向

/hello.jsp

3)转发到Action

Demo1Action

/

4)重定向到Action

Demo1Action

/

二、访问servlet的API

a414af67dffda4409ce45ebebdb4c353.png

注:域对象实际上就是一个Map

获取这些对象的方法

方法一:通过ActionContext(建议,只有它是获取的域对象:字典形式)

//request域=> map (struts2并不推荐使用原生request域)

//不推荐

Map requestScope = (Map) ActionContext.getContext().get("request");

//推荐(因为ActionContext的生命周期和request域相同)

ActionContext.getContext().put("name", "requestTom");

//session域 => map

Map sessionScope = ActionContext.getContext().getSession();

sessionScope.put("name", "sessionTom");

//application域=>map

Map applicationScope = ActionContext.getContext().getApplication();

applicationScope.put("name", "applicationTom");

获取方法

request: ${requestScope.name}

session:${sessionScope.name}

application:${applicationScope.name}

方法二:通过ServletActionContext

//原生request

HttpServletRequest request = ServletActionContext.getRequest();

//原生session

HttpSession session = request.getSession();

//原生response

HttpServletResponse response = ServletActionContext.getResponse();

//原生servletContext

ServletContext servletContext = ServletActionContext.getServletContext();

方法三:通过实现接口方式

public class Demo7Action extends ActionSupport implements ServletRequestAware { // 如果想获得其他的,在实现其他接口

private HttpServletRequest request;

public String execute() throws Exception {

System.out.println("原生request:"+request);

return SUCCESS;

}

@Override

public void setServletRequest(HttpServletRequest request) {

this.request = request;

}

}

Struts与Struts2的生命周期的区别

Struts1的模式(servlet的生命周期)

默认在第一次访问的时候实例化(init方法)servlet类

然后每次请求来的时候执行service方法

这样大家都修改同一个类成员变量,就会有线程不安全的隐患

Struts2的模式

每来一个请求实例化一个Action对象,请求结束销毁

这样各自操作各自的,没有线程安全问题

Struts MVC

9869bd3145393b883a6805ed95ace558.png

0c5e4741dfb61f9da813e3bb4c9bbaa8.png

详情请看:这里

三、接收参数

方法一:属性驱动获得参数

9d05f83e2e4a47150966d3f1e8d78a7b.png

4929e98caab99e6d022e2ff0afc88d33.png

注:要有get,set方法

方法二:对象驱动

074964e19aa38a0f678740e2d86e1091.png

public class Demo9Action extends ActionSupport {

//准备user对象

private User user;

public String execute() throws Exception {

System.out.println(user);

return SUCCESS;

}

public User getUser() {  // 前两种方式都需要提供get,set方法

return user;

}

public void setUser(User user) {

this.user = user;

}

}

方法三:模型驱动

db0d6f833f66f08ebd0ef6adce6a17cf.png

public class Demo10Action extends ActionSupport implements ModelDriven {// 实现接口

//准备user 成员变量

private User user =new User();

public String execute() throws Exception {

System.out.println(user);

return SUCCESS;

}

@Override

public User getModel() {

return user;

}

}

其他:获取list,map

list

3bae068edc480ee5280c33378c97ae4a.png

7511522b063e7aba619a68e85387c033.png

Map

e413daf734f913887ac2757c0620b416.png

11b6869042a4e3b218b1654ef4ab2ca7.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值