Struts2框架底层是基本Servlet的,所以我们肯定要去访问Servlet API,而且开发Web应用不去访问Servlet API也是不可能的,所以我们Struts2框架提供了我们去访问Servlet API的方法;
提供的访问方法如下:
①:使用ServletActionContext访问Servlet API;
②:使用ActionContext访问ServletAPI;
③:使用一些接口 如 ServletRequestAware,ServletResponseAware等等去直接访问Servlet API
下面开始分别的学习.
(一):使用ServletActionContext访问Servlet API
Struts2提供了一个ServletActionContext工具类,查看API可以知道这个类是继承与ActionContext,稍后同样会讲到ActionContext去范文Servlet API
其中主要提供了几个重要的静态方法,如下(列举常用的方法):
登陆页面: <body> <form action="login"> 用户名:<input type="text" name="username"><br/> 密码:<input type="password" name="password"><br/> 年龄 :<input type="text" name="age"><br/> 出生日期 :<input type="text" name="date"><br/> <input type="submit" value="登录"> </form> </body> 显示信息页面: <body> <h1>用戶信息显示......</h1> 用户名:${requestScope.username}<br/> 密码:${requestScope.password}<br/> 年龄:${requestScope.age}<br/> 出生日期:${requestScope.date}<br/> ServletContext:<%=application.getAttribute("context") %><br/> Session:<%=session.getAttribute("session") %><br/> </body>
@Override public String execute() throws Exception { //得到ServletContext,并且设置属性,然后在页面上面显示属性值 ServletContext context = ServletActionContext.getServletContext(); context.setAttribute("context", "HelloWorld,ServletContext"); //得到HttpServletRequest,并且通过这个,去得到HttpSession的值,并且设置属性,同样在页面上面显示 HttpServletRequest request= ServletActionContext.getRequest(); HttpSession session= request.getSession(); session.setAttribute("session", "HelloWorld,Session"); //其他的就不一一举例了,用法都是差不多的,首先得到该对象,然后接下来的用法和在Servlet中的用户的用法一样 return SUCCESS; }在上面的execute()方法中,主要是演示了,两个方法,其他的用户也差不多,留给大家吧。都是首先得到该是要使用的对象,然后用法都和Servlet中的方法都差不多的。
@Override public String execute() throws Exception { // 首先去获得ActionContext对象 ActionContext context = ActionContext.getContext(); // 去获取Session的Map模拟对象,然后设置Key-Value值,接着在页面进行显示 Map<String, Object> map = context.getSession(); map.put("session", "HelloWorld,ActionContext Session...."); // 去获取Application的Map模拟对象,然后设置Key-Value值,接着在页面进行显示 Map<String, Object> application = context.getApplication(); application.put("application", "HelloWorld,ActionContext Application..."); return SUCCESS; }还有些其他对象的用法,也同样不演示了
@Override public String execute() throws Exception { // 往HttpServletRequest实例中进行set设置值,然后在页面中进行显示... HttpSession session = mRequest.getSession(); session.setAttribute("ServletRequestAware", "HelloWorld,ServletRequestAware....."); // ServletContext servletContext = mContext.getContext("servletContext"); // servletContext // .setAttribute("servletContext", // "HelloWorld,ServletContextAware"); return SUCCESS; } // 为了代码展现方法,把HttpServletRequest的声明放到了这里 private HttpServletRequest mRequest; // 实现HttpServletRequest接口必须实现以下的方法 public void setServletRequest(HttpServletRequest request) { this.mRequest = request; }