struts2 servlet api 访问方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2 servlet api 访问方式相关的知识,希望对你有一定的参考价值。

Action中访问ServletAPI.

主要就是接收表单参数及向域对象中存取值.

关于SevletAPI的方法在Action中有三种方式:

 

1.完全解耦合的形式:

* 使用一个类:ActionContext.

* static ActionContext getContext(); --- 获得ActionContext对象

* Map getParameters();                   --- 接收提交到Action中的参数.

* Map getSession();                      --- 获得Session的Map.

* Map getApplication();                  --- 获得Application的Map.

* void put(String key,Object value); --- 向request中存值.

* Object get(String key);                --- 从request中获得值.

 

* 代码实现:

// 获得ActionContext对象

    ActionContext context = ActionContext.getContext();

    // 获得表单提交参数:

    Map<String,Object> map = context.getParameters();

    String[] username = (String[]) map.get("username");

    System.out.println(username[0]);

    String[] password = (String[]) map.get("password");

    System.out.println(password[0]);

   

    // 向request域中存值

    context.put("reqName", "reqValue");

    System.out.println("request域中的值:"+context.get("reqName"));

    // 向session域中存值

    context.getSession().put("sessName", "sessValue");

    System.out.println("session域中的值:"+context.getSession().get("sessName"));

    // 向ServletContext中存值

    context.getApplication().put("appName", "appValue");

    System.out.println("application域中的值:"+context.getApplication().get("appName"));

   

2.使用接口注入的方式:

* 实现接口:

* ServletRequestAware

* ServletResponseAware

* ServletContextAware

 

* 代码实现:

public class RequestAction2 extends ActionSupport implements ServletRequestAware,ServletContextAware{

private HttpServletRequest request;

private ServletContext context;

 

@Override

public String execute() throws Exception {

    // 1.接收参数:

    String username = request.getParameter("username");

    String password = request.getParameter("password");

    System.out.println(username +"   "+password);

    // 2.向request域中存值:

    request.setAttribute("reqName", "李健");

    // 3.向session域中存值:

    request.getSession().setAttribute("sessName", "凤姐");

    // 4.向application域中存值.

    context.setAttribute("appName", "芙蓉");

    return SUCCESS;

}

 

public void setServletRequest(HttpServletRequest request) {

    this.request = request;

}

 

public void setServletContext(ServletContext context) {

    this.context = context;

}

}

 

3.使用ServletActionContext中静态方法:

方法:

* getRequest();

* getResponse();

* getServetContext();

 

代码:

// 1.接收参数:

    HttpServletRequest request = ServletActionContext.getRequest();

    String username = request.getParameter("username");

    String password = request.getParameter("password");

    System.out.println(username+"    "+password);

    // 2.向request域中存值:

    request.setAttribute("reqName", "小健健");

    // 3.向session域中存值:

    request.getSession().setAttribute("sessName", "小凤凤");

    // 4.向application中存值:

    ServletActionContext.getServletContext().setAttribute("appName", "小蓉蓉");

 

***** 第一种方式是最好的!习惯第三种用的很方便.

以上是关于struts2 servlet api 访问方式的主要内容,如果未能解决你的问题,请参考以下文章

Struts2 与Servlet API解耦,耦合的访问方式

struts2--Servlet的API&封装

5.struts2中Action类中获取ServletAPI的三种方式

struts2的获取Servlet API的几种方式的学习笔记

Struts2的API&数据封装

Struts2 (下)