zoukankan      html  css  js  c++  java
  • 在struts2中訪问servletAPI

    在struts2中訪问servletAPI,通俗点也就是使用servlet中的两个对象request对象和response对象。

    前几天看到一个CRM项目的源代码,里面使用request对象和response对象方式和我曾经使用的方式有点不同,于是便上网查询一些相关资料奋斗。特此记录于此,有兴趣的也能够參考參考。

    • 以往使用struts2往网页填充数据通常採用往值栈存放数据。也就是ActionContext.getContext().****();后面的方法类似与request对象和response对象的方法。

    • 这几天看到的是实现接口ServletRequestAware,ServletResponseAware。通过这两个接口实现两个方法setServletResponse(HttpServletResponse response)与setServletRequest(HttpServletRequest request)。然后訪问用户请求的HttpServletRequest实例与server响应的HttpServletResponse实例。
    • 进过上网查找另一种ServletActionContext。这个类直接继承了ActionContext。
    接下来介绍一下ActionContext和ServletActionContext各自的方法:

    1. ActionContext:
        • Object get(Object key):该方法类似于调用HttpServletRequest的getAttribute(String name)方法;
        • Map getApplication():返回一个Map对象。该对象模拟了该应用的ServletContext实例。
        • static ActionContext getContext():静态方法,获取系统的ActionContext实例;
        • Map getParameters():获取全部的请求參数。

          类似于调用HttpServletRequest对象的getParameterMap方法;

        • Map getSession():返回一个Map对象,该Map对象模拟了HttpSession实例。
        • void setApplication(Map application):直接传入一个Map实例,将该Map实例里的key-value对转换成application的属性名。属性值;
        • void setSession(Map session):直接传入一个Map实例。将该Map实例里的key-value对转换成session的属性名。属性值
    1. ServletActionContext
        • static PageContext getPageContext():取得Web应用的PageContext对象;
        • static HttpServletRequest getRequest():取得web应用的HttpServletRequest对象;
        • static HttpServletResponse getResponse():取得web应用的HttpServletResponse对象;
        • static ServletContext getServletContext():取得web应用的ServletContext对象;
    那么这几种方式有什么差别呢?原来使用ActionContext和ServletActionContext这两个类是属于非IOC方式来訪问request对象和response对象。而Action实现ServletRequestAware和ServletResponseAware接口是属于IOC方式的。关于IOC请点击这里

    我贴上代码来看看吧。

    ServletRequestAware,ServletResponseAware

    package cn.crm.web.action;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.struts2.interceptor.ServletRequestAware;
    import org.apache.struts2.interceptor.ServletResponseAware;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class BaseAction extends ActionSupport implements ServletRequestAware,ServletResponseAware{
    
    	
    	protected HttpServletRequest request;
    	protected HttpServletResponse response;
    	@Override
    	public void setServletResponse(HttpServletResponse response) {
    		// TODO Auto-generated method stub
    		this.response=response;
    	}
    
    	@Override
    	public void setServletRequest(HttpServletRequest request) {
    		// TODO Auto-generated method stub
    		this.request=request;
    	
    	}
    
    	
    }
    
    ActionContext

    ActionContext context = ActionContext.getContext(); 
    Map params = context.getParameters(); 
    String username = (String) params.get("username");


    ServletActionContext
    HttpServletRequest request = ServletActionContext. getRequest();
    HttpSession session = ServletActionContext. getRequest().getSession();


    
    



  • 相关阅读:
    学习笔记 css3--选择器&新增颜色模式&文本相关
    HTML5之新增标签用途及应用场景
    js中邦定事件与解绑支持匿名函数
    常用网站开发类Firefox扩展插件 (转)
    使用Easy4net编写代码生成器
    jQuery分页插件jBootstrapPage,一个Bootstrap风格的分页插件
    使用jQuery插件jRemoteValidate进行远程ajax验证,可以自定义返回的信息
    (新)自己动手写ORM框架(1)-增删查改的使用
    (3) iOS开发之UI处理-UIView篇
    (2) iOS开发之UI处理-UILabel篇
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5076747.html
Copyright © 2011-2022 走看看