首页 > 代码库 > Struts2 网站上来多少人

Struts2 网站上来多少人

strut.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>   <constant name="struts.action.extension" value="http://www.mamicode.com/action,do,"></constant>    <package name="default" namespace="/" extends="struts-default">        <action name="login-ui">            <result>/login.jsp</result>        </action>        <action name="user-login" class="user.action.UserAction">            <result name="login-success">/login-success.jsp</result>        </action>                <action name="logout" class="user.action.UserAction" method="logout">            <result name="logout-success">/login.jsp</result>        </action>    </package></struts>

Action中的业务实现:

  

package user.action;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import org.apache.struts2.interceptor.ApplicationAware;import org.apache.struts2.interceptor.SessionAware;public class UserAction implements SessionAware,ApplicationAware{    private String username;    public void setUsername(String username) {        this.username = username;    }    public String execute(){        //把用户信息存入Session域中        //1:获取session 实现SessionAware接口        //2:获取登录信息    :通过在Action中添加setter方法        //3:把用户信息存入Session域中        session.put("username", username);        //在线人数+1            //1:获取当前在线人数 :从application中获取。    Integer count=    (Integer) application.get("count");        if(count==null){            count=0;        }            //2:当前人数+1        count++;        application.put("count", count);        return "login-success";    }        public String logout(){        //1.在线人数-1        Integer count=(Integer) application.get("count");        if(count !=null && count>0){            count--;            application.put("count", count);        }        //2.session失效 :用ServletActionContext获取到HttpServletRequest。让后用HttpServletRequest            //获取到session :request.getSession() 调用:invalidate()        HttpServletRequest request = ServletActionContext.getRequest ();        request.getSession().invalidate();        return "logout-success";    }        private Map<String,Object> session;    public void setSession(Map<String, Object> session) {        this.session=session;    }    private Map<String,Object> application;    public void setApplication(Map<String, Object> application) {        this.application=application;    }}

用到的知识就是:获取WEB资源:

    在 Action 中, 可以通过以下方式访问 web 的 HttpSession, HttpServletRequest, HttpServletResponse  等资源

      1:与 Servlet API 解耦的访问方式

        技术分享

      2:与Servlet API耦合的访问方式

      技术分享

-------------ActionContext---------

1):ActionContext 是 Action 执行的上下文对象, 在 ActionContext 中保存了 Action 执行所需要的所有对象, 包括 parameters, request, session, application 等.
2):获取 HttpSession 对应的 Map 对象:    
  public Map getSession()
3):获取 ServletContext 对应的 Map 对象:
      public Map getApplication()
4):获取请求参数对应的 Map 对象:
  public Map getParameters()
5):获取 HttpServletRequest 对应的 Map 对象:
  public Object get(Object key):

  ActionContext 类中没有提供类似 getRequest() 这样的方法来获取 HttpServletRequest 对应的 Map 对象. 要得到 HttpServletRequest 对应的 Map 对象, 可以通过为 get() 方法传递 “request” 参数实现

------------------解耦和方式的实现接口---------

Action 类通过可以实现某些特定的接口, 让 Struts2 框架在运行时向 Action 实例注入 parameters, request, session 和 application 对应的 Map 对象:
技术分享

-----------耦合形式的        原生的Servlet API  ServletActionContent-------------

常用的方法:

 1:直接获取 HttpServletRequest 对象:
    ServletActionContext.getRequest()
   2:直接获取 HttpSession 对象
    ServletActionContext.getRequest().getSession()
  3:直接获取 ServletContext 对象
    ServletActionContext.getServletContext()

 

Struts2 网站上来多少人