Struts与Servlet API解耦的访问方式

IOC方式:

1Struts2HttpServletRequestHttpSessionServletContext进行了封装,构造了三个Map对象来替代这三种对象

public class LoginAction implements Action {
//在这里展示了,如何将用户登对录对象写入到request,session,application作用域中
public User user;
public String execute() throws Exception {
   		ActionContext context=ActionContext.getContext();
   		Map request=(Map)context.get("request");//获得request对象
   		Map session=(Map)context.getSession();
   		Map application=(Map)context.getApplication();
   		request.put("user",user);//将user对象放到request作用域中
   		session.put("user",user);//将user对象放到session作用域中
   		application.put("user",user);//将user对象放到application作用域中
}

2、想要在action类中直接使用HttpServletRequestHttpServletResponseServletContext这些对象

public class LoginAction implements Action {
//在这里展示了,如何将用户登对录对象写入到request,session,application作用域中
public User user;
public String execute() throws Exception {
   	HttpServletRequest request=ServletActionContext.getReuquest();
   	HttpSession session=request.getSession();
   	ServletContext application=ServletActionContext.getServletContext();
    request.setAttribute("user",user);//将user对象放到request作用域中
   	session. setAttribute("user",user);//将user对象放到session作用域中
   	application. setAttribute("user",user);//将user对象放到application作用域中
}


IOC方式:

1、在Action类中实现某些特定的接口的方式,让Struts2框架在运行时向Action实例注入requestsessionapplication对象。

public class LoginAction implements Action,RequestAware,SessionAware,ApplicationAware {
public Map request;//在这里将通过ioc的方式注入,注意是Map类型
public Map session;
public Map application;
public User user;
public String execute() throws Exception {
  		request.put("user",user);//将user对象放到request作用域中
   		session.put("user",user);//将user对象放到session作用域中
   		application.put("user",user);//将user对象放到application作用域中
}
//request,session.application对象对应的Set/get方法...
}


2Action类还可以实现ServletRequestAwareServletContextAware接口,由struts2框架向Action实例注入HttpServletRequestServletContext对象。

public class LoginAction implements Action,ServletRequestAware,ServletContextAware {
public HttpServletRequest request;//在这里将通过ioc的方式注入
public ServletContext application;
public User user;
public String execute() throws Exception {
   		request.setAttribute("user",user);//将user对象放到request作用域中
  		application. setAttribute("user",user);//将user对象放到application作用域中
}	
//override request,application对象对应的Set/get方法...
}


IOC(Inversion of Control):控制反转

   不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务、容器负责将这些联系在一起。

   IoC的本质是实现了对象之间依赖关系的转移。通过使用Spring框架,开发人员将不必自己在代码中维护对象之间的依赖关系,只需在配置文件中进行设定就可以了。Spring会自动地依据配置信息来维护对象之间的依赖关系,将被依赖的对象设置给依赖对象。(依赖)控制权由应用代码中转到了外部容器,控制权的转移,即所谓的“反转”,换句话说,就是由容器控制程序之间的(依赖)关系,而非传统实现中由程序代码直接操控。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值