Struts2中操作数据的种方法
一.直接获得ServletApi
1.struts2提供了三个接口(ServletContextAware,ServletRequestAware,ServletResponseAware),实现这三个接口Action就可以直接获取ServletApi中ServletContext,HttpServletRequest,HttpServletResponse对象;
如果Action实现了ServletRequestAware接口,Action就必须实现:
public void setServletRequest(HttpServletRequest request)方法
ServletContextAware与ServletResponseAware接口同理.
2.Struts2中提供了一个ServletContextAction工具类,它提供了几个静态方法
>static PageContext getPageContext();//取得Web应用的PageContext对象
>static HttpServletRequest getRequest();//取得Web应用中的HttpServletRequest对象
>static HttpServletResponse getResponse();//取得Web应用中HttpResponse对象
>static ServletContext getServletContext();//取得Web应用的ServletContext对象
通过这两种方法Action可以直接访问ServletApi,但这样Action与ServletApi直接耦合不利于解耦
二.使用struts2封装后的域对象
struts2将域对象封装为Map<String,Object>集合,所以对数据的操作就可以通过对对应的Map集合的操作来实现,得到对应map集合的方法:
1.通过ActionContext类获取封装后的域对象,通过ActionContext提供的方法可以得到域对象封装后的map集合,以及完成数据操作,具体方法查看Struts Api;
2.通过实现RequestAware,SessionAware...方法来获取对应的Map集合;
这中方法不会导入多余的ServletApi中的包,降低了与ServletApi的耦合,推荐使用此方法
三.两种方法的适用环境
除非需要用到ServletApi中的方法(如,request.getContextPath())时,都采用第二种,只有采用第二种,只有需要使用ServletApi独有的方法时才适用方法一.当Action中多次用到同一个域对象时,应采取实现接口比较方便,否则在需要用到的Action实例化一个Action类,然后通过该方法来获取域对象数据
Struts操作数据的方法
最新推荐文章于 2019-08-20 17:40:50 发布