在struts2中使用servletAPI的几种方式

 

struts2的Action放弃了request,response等ServletAPI,.使得在业务层上更加独立,在有时候使用struts2进行Web开发的时候,不可避免的要在action中使用servletAPI,下面就是几种在struts2中使用servletAPI的学习笔记

(JSP,xml详细配置在最后)

  1. 获取session  Map类型(解耦)

//调用servletAPI获得session,name存入session    ActionContext.getContext().getSession().put("user", name);

//登出删除sessionuser

   public String logout()

   {

      ActionContext.getContext().getSession().remove("user");

      return "success";

   }

 

       输入账号密码后测试

点击退出在打开登陆成功的界面,用户名为空白,删除成功。

 

2.获取request  Map类型(解耦)

//获取request

         Map req=(Map)ActionContext.getContext().get("request");

         //获取Application

         Map application=ActionContext.getContext().getApplication();

         //获取parameters

         Map parameters=ActionContext.getContext().getParameters();

         //等于request中的request.getParameters("name");

//这里parameters.get("name")返回的是String数组需要转换下

System.out.println(((String[])parameters.get("name"))[0]);

测试:

 

3.直接使用actioncontext获取Request类型

HttpServletRequest request=(HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);

         System.out.println(request.getParameter(name));

       测试结果同上

 

4.通过耦合方式使用request

//步骤1实现ServletRequestAware接口

public class login2 implements ServletRequestAware

//步骤2声明HttpServletRequest request;

   HttpServletRequest request;

//步骤3实现setServletRequest方法

   public void setServletRequest(HttpServletRequest request) {

      this.request=request;

   }

//使用request

         request.getSession().setAttribute("user", name);

         System.out.println(request.getParameter("name"));

测试结果也和上面的图一样

 

5.使用ServletActionContext获得request

//使用HttpServletRequest获得request

         HttpServletRequest request=ServletActionContext.getRequest();

         request.getSession().setAttribute("user", name);

         System.out.println(request.getParameter("name"));

以上就是我所学习的使用servletAPI的方式,只是举例了request一种,其他的如respons也一样方法。

 

Jsp页面

登陆页面

<form action="login.action" method="post">

      用户名:<input type="text" name="name"><br/>

      :<input type="password" name="pwd"><br/>

      <input type="submit" value="登陆">

   </form>

Login.jsp登陆成功

<h1>登陆成功!!</h1><br/>

  <a>用户名:${user }  </a><br>

  <a href="logout.action">退出</a>

Struts.xml

<package name="logindemo" extends="struts-default" namespace="/">

      <action name="login" class="com.action.login2">

         <result name="success">/login.jsp</result>

         <result name="error">/loginError.jsp</result>

      </action>

      <action name="logout" class="com.action.login2" method="logout">

         <result name="success">/index.jsp</result>

      </action>

   </package>

 

另外在jsp页面中碰到了一个奇怪的错误

Type Exception Report

Message javax.el.ELException: Failed to parse the expression [${}]

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

表达式解析异常,原因是在jsp页面的注释中添加了 ${}

              只需要将注释里面的${}去掉就正常了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值