您的位置:首页 > 编程语言 > Java开发

Struts与Servlet API解耦的访问方式

2016-06-26 11:20 375 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_34047734/article/details/51761991

非IOC方式:

1、Struts2对HttpServletRequest、HttpSession和ServletContext进行了封装,构造了三个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类中直接使用HttpServletRequest、HttpServletResponse、ServletContext这些对象

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实例注入request、session和application对象。

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方法...
}


2、Action类还可以实现ServletRequestAware和ServletContextAware接口,由struts2框架向Action实例注入HttpServletRequest和ServletContext对象。

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会自动地依据配置信息来维护对象之间的依赖关系,将被依赖的对象设置给依赖对象。(依赖)控制权由应用代码中转到了外部容器,控制权的转移,即所谓的“反转”,换句话说,就是由容器控制程序之间的(依赖)关系,而非传统实现中由程序代码直接操控。




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: