Struts2项目搭建之接收参数(三)

说明

  • 本文介绍前台和后台获取request,session,application对象
  • 本文介绍前台和后台获取HttpServletRequest和ServletContext对象

准备工作

login.jsp部分

<%@ page contentType="text/html;charset=GBK" language="java" %>
<html>
<head>
    <title>登入成功界面</title>
</head>
<body>
<%--接收request参数--%>
<div>
    ${request_hello}
</div>
</body>
</html>

index.jsp部分

<%@ page contentType="text/html;charset=GBK" language="java" %>
<%
    Object str = application.getAttribute("application_counter");
    str = str != null ? "第" + str + "次访问此页面" : "";
%>
<html>
<head>
    <title>登入界面</title>
</head>
<body>
<form action="login.action" name="login.LoginAction">
    <%--接收session参数--%>
    <input type="text" id="login_user_name" name="userName" placeholder="请输入用户名" value="${session_username}"/>
    <input type="password" id="login_user_password" name="userPassword" placeholder="请输入密码"
           value="${session_userPassword}"/>

    <div id="login_is_userName">${isLogin}</div>
    <%--接收application参数--%>
    <div id="login_counter">
        <%=str%>
    </div>
    <input type="submit" id="login" value="登入"/>
</form>
</body>
</html>

request,session,application对象获取方式

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

  • 通过ActionContext获得request,session,application对象
  • 通过接口注入方式来获取request,session,application对象

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

  • 通过ServletActionContext来获取HttpServletRequest和ServletContext对象
  • 通过接口注入方式来获取HttpServletRequest和ServletContext对象

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

通过ActionContext获得request,session,application对象

LoginAction代码部分

package login.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import login.entity.LoginEntity;
import org.apache.log4j.Logger;
import util.log4j.MyLog4J;

import java.util.Map;

/**
 * 创建日期:2018年03月04日
 * 创建时间:10:15
 * 项目名称:DEMO
 */
public class LoginAction extends ActionSupport implements ModelDriven<LoginEntity> {
    private Logger myLog4J = MyLog4J.getLog(this.getClass());
    private LoginEntity loginEntity = new LoginEntity();
    @SuppressWarnings("unchecked")
    @Override
    public String execute() throws Exception {
        String result = null;
        ActionContext actionContext = ActionContext.getContext();
        Map request = (Map) actionContext.get("request");
        Map session = actionContext.getSession();
        Map application = actionContext.getApplication();
        if (loginEntity != null)
            if (loginEntity.getUserName().equals("erciyuan") && loginEntity.getUserPassword().equals("12345678")) {
                //登入成功后的欢迎提示
                request.put("request_hello", "登入成功,欢迎来到Struts2首页");
                result = SUCCESS;
            } else {
                //保存账号和密码
                session.put("session_username", loginEntity.getUserName());
                session.put("session_userPassword", loginEntity.getUserPassword());
                //网站访问量
                Integer integer = (Integer) application.get("application_counter");
                integer = integer == null ? 1 : ++integer;
                application.put("application_counter", integer);
                myLog4J.info(String.valueOf(integer));
                if (loginEntity != null)
                    loginEntity.setIsLogin("用户名或密码错误");
                result = LOGIN;
            }
        return result;
    }

    public LoginEntity getModel() {
        return loginEntity;
    }
}

通过接口注入方式来获取request,session,application对象

LoginAction代码部分

package login.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import login.entity.LoginEntity;
import org.apache.log4j.Logger;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import util.log4j.MyLog4J;

import java.util.Map;

/**
 * 创建日期:2018年03月04日
 * 创建时间:10:15
 * 项目名称:DEMO
 */
public class LoginAction extends ActionSupport implements ModelDriven<LoginEntity>, RequestAware, SessionAware, ApplicationAware {
    private Logger myLog4J = MyLog4J.getLog(this.getClass());
    private LoginEntity loginEntity = new LoginEntity();
    private Map request;
    private Map session;
    private Map application;
    @SuppressWarnings("unchecked")
    @Override
    public String execute() throws Exception {
        String result = null;
        if (loginEntity != null)
            if (loginEntity.getUserName().equals("erciyuan") && loginEntity.getUserPassword().equals("12345678")) {
                //登入成功后的欢迎提示
                request.put("request_hello", "登入成功,欢迎来到Struts2首页");
                result = SUCCESS;
            } else {
                //保存账号和密码
                session.put("session_username", loginEntity.getUserName());
                session.put("session_userPassword", loginEntity.getUserPassword());
                //网站访问量
                Integer integer = (Integer) application.get("application_counter");
                integer = integer == null ? 1 : ++integer;
                application.put("application_counter", integer);
                myLog4J.info(String.valueOf(integer));
                if (loginEntity != null)
                    loginEntity.setIsLogin("用户名或密码错误");
                result = LOGIN;
            }
        return result;
    }

    public LoginEntity getModel() {
        return loginEntity;
    }

    public void setApplication(Map<String, Object> map) {
        application = map;
    }

    public void setRequest(Map<String, Object> map) {
        request = map;

    }

    public void setSession(Map<String, Object> map) {
        session = map;
    }
}

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

通过ServletActionContext来获取HttpServletRequest和ServletContext对象

LoginAction代码部分

package login.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import login.entity.LoginEntity;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import util.log4j.MyLog4J;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * 创建日期:2018年03月04日
 * 创建时间:10:15
 * 项目名称:DEMO
 */
public class LoginAction extends ActionSupport implements ModelDriven<LoginEntity> {
    private Logger myLog4J = MyLog4J.getLog(this.getClass());
    private LoginEntity loginEntity = new LoginEntity();

    @Override
    public String execute() throws Exception {
        String result = null;
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpSession session = request.getSession();
        ServletContext application = ServletActionContext.getServletContext();
        if (loginEntity != null)
            if (loginEntity.getUserName().equals("erciyuan") && loginEntity.getUserPassword().equals("12345678")) {
                //登入成功后的欢迎提示
                request.setAttribute("request_hello", "登入成功,欢迎来到Struts2首页");
                result = SUCCESS;
            } else {
                //保存账号和密码
                session.setAttribute("session_username", loginEntity.getUserName());
                session.setAttribute("session_userPassword", loginEntity.getUserPassword());
                //网站访问量
                Integer integer = (Integer) application.getAttribute("application_counter");
                integer = integer == null ? 1 : ++integer;
                application.setAttribute("application_counter", integer);
                myLog4J.info(String.valueOf(integer));
                if (loginEntity != null)
                    loginEntity.setIsLogin("用户名或密码错误");
                result = LOGIN;
            }
        return result;
    }

    public LoginEntity getModel() {
        return loginEntity;
    }
}

通过接口注入方式来获取HttpServletRequest和ServletContext对象

LoginAction代码部分

package login.action;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import login.entity.LoginEntity;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;
import util.log4j.MyLog4J;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * 创建日期:2018年03月04日
 * 创建时间:10:15
 * 项目名称:DEMO
 */
public class LoginAction extends ActionSupport implements ModelDriven<LoginEntity>, ServletRequestAware, ServletContextAware {
    private Logger myLog4J = MyLog4J.getLog(this.getClass());
    private LoginEntity loginEntity = new LoginEntity();
    private ServletContext application;
    private HttpServletRequest request;

    @Override
    public String execute() throws Exception {
        String result = null;
        HttpSession session = request.getSession();
        application = ServletActionContext.getServletContext();
        if (loginEntity != null)
            if (loginEntity.getUserName().equals("erciyuan") && loginEntity.getUserPassword().equals("12345678")) {
                //登入成功后的欢迎提示
                request.setAttribute("request_hello", "登入成功,欢迎来到Struts2首页");
                result = SUCCESS;
            } else {
                //保存账号和密码
                session.setAttribute("session_username", loginEntity.getUserName());
                session.setAttribute("session_userPassword", loginEntity.getUserPassword());
                //网站访问量
                Integer integer = (Integer) application.getAttribute("application_counter");
                integer = integer == null ? 1 : ++integer;
                application.setAttribute("application_counter", integer);
                myLog4J.info(String.valueOf(integer));
                if (loginEntity != null)
                    loginEntity.setIsLogin("用户名或密码错误");
                result = LOGIN;
            }
        return result;
    }

    public LoginEntity getModel() {
        return loginEntity;
    }

    public void setServletContext(ServletContext servletContext) {
        application = servletContext;

    }

    public void setServletRequest(HttpServletRequest httpServletRequest) {
        request = httpServletRequest;
    }
}

界面展示

密码错误


密码正确












本人是一枚程序猿,如果觉得整理的不错,请关注个人微信公众号(扫一扫):

猜你喜欢

转载自blog.csdn.net/huyingzuo/article/details/80117052