Struts2-Action-7-系列问题(Action中的web元素访问)

10.action中访问web元素(access web elements)
取得Map类型request,session,application,真实类型HttpServletRequest,HttpSession,ServletContex的引用
1.前三者:依赖于容器( map类型)
2.前三者:IOC // 一般只用这种( map类型)
3.后三者:依赖于容器(真实类型)
4.后三者:IOC(真实类型)

第一种:
“`
public class LoginAction extends ActionSupport{
private Map request;
private Map session;
private Map application;

public LoginAction(){
    request = (Map) ActionContext.getContext().get("request");
    session = ActionContext.getContext().getSession();
    application = ActionContext.getContext().getApplication();
    System.out.println("LoginAction");
}

public  String execute(){
    request.put("r1","r1");
    session.put("s1", "s1");
    application.put("a1","a1");
    return SUCCESS;
}

}
“`
第二种(常用):

  public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware
{
    private Map<String, java.lang.Object> request;
    private Map<String,java.lang.Object> session;
    private Map<String,java.lang.Object> application;

    //  DI  IOC
    public  String execute(){
        request.put("r1", "r1");
        session.put("s1", "s1");
        application.put("a1", "a1");//  一般不用
        return SUCCESS;
    }
    public void setRequest(Map<String, java.lang.Object> map) {
        this.request=map;
    }

    public void setApplication(Map<String, java.lang.Object> map) {
        this.session=map;
    }

    public void setSession(Map<String, java.lang.Object> map) {
        this.application=map;
    }
}

第三种(很少用):

//  可以忘记
public class LoginAction3 extends ActionSupport{
    private HttpServletRequest request;
    private HttpSession session;
    private ServletContext application;

    public LoginAction3(){
        request = ServletActionContext.getRequest();
        session = request.getSession();
        application = session.getServletContext();
        System.out.println("LoginAction");
    }

    public  String execute(){
        request.setAttribute("r1","r1");
        session.setAttribute("s1", "s1");
        application.setAttribute("a1","a1");
        return SUCCESS;
    }

}

第四种(不常用):

//  IOC
public class LoginAction4 extends ActionSupport implements ServletRequestAware{
    private HttpServletRequest request;
    private HttpSession session;
    private ServletContext application;

    public  String execute(){
        request.setAttribute("r1","r1");
        session.setAttribute("s1", "s1");
        application.setAttribute("a1","a1");
        return SUCCESS;
    }


    public void setServletRequest(HttpServletRequest request) {
        this.request = request;
        this.session = request.getSession();
        this.application = session.getServletContext();
    }
}

这四种的返回JSP页面是统一的:

<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
<h2>login.jsp</h2>
<s:property value="#request.r1"></s:property> | <%=request.getAttribute("r1")%><br />
<s:property value="#session.s1"></s:property> | <%=session.getAttribute("s1")%><br />
<s:property value="#application.a1"></s:property> | <%=application.getAttribute("a1")%><br />
<s:debug></s:debug>
</body>
</html>

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"POST /struts2-showcase/index.action" 是一个常见的Web请求,指示客户端正在向服务器的特定路径发送POST请求。在这种情况下,请求的路径是"/struts2-showcase/index.action"。 这个请求可能是针对使用Struts 2框架构建的Web应用程序的攻击尝试。Struts 2是一个流行的Java Web应用程序开发框架,但它也存在一些安全漏洞。攻击者可能会尝试通过发送特定的请求来利用这些漏洞。 要确保您的Web应用程序安全,您可以采取以下措施: 1. 更新和修补漏洞:确保您使用的Struts 2框架是最新的,并及时应用官方发布的安全补丁。这有助于修复已知的漏洞,并提供更好的安全性。 2. 输入验证和过滤:对于所有从客户端接收的输入数据,包括表单提交和URL参数,进行有效的输入验证和过滤。确保只接受预期格式和类型的数据,并避免执行任意代码。 3. 强化访问控制:通过实施适当的访问控制策略,限制用户对敏感功能和数据的访问。使用角色和权限来确保只有授权用户可以执行特定操作。 4. 安全日志记录和监控:确保您的Web应用程序具有适当的日志记录和监控机制,以便及时检测和响应任何异常活动。监控登录尝试、访问模式和异常请求等活动,以便尽早发现潜在的攻击。 5. 安全培训和意识:教育您的开发人员和用户有关常见的Web应用程序安全问题和最佳实践。提高他们对潜在威胁的意识,并确保他们知道如何正确处理敏感数据和执行安全操作。 请注意,以上建议是基本的安全实践,但仍然需要根据您的具体应用程序和环境进行调整和扩展。定期进行安全审查和渗透测试,并与安全专家合作,以确保您的Web应用程序的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值