Struts2中访问web元素

1.访问web元素,可以取得Map类型的request,session,application,真实类型为HttpServletRequest,HttpSession,ServletContext的引用。Map类型的request,session,application是依赖于Struts2容器,并只用控制反转IOC这种,而后面三个真实类型,虽然也是依赖于Struts2,可以使用获得原类型,还可以使用获取原类型加上控制反转,接下来分别介绍四种方法来访问web元素。

2.首先,新建一个struts2项目,取名为WebAttr,项目结构图如下:

然后打开index.jsp页面,修改编码格式,开始编写该页面的代码,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!–<link rel="stylesheet" type="text/css" href="styles.css">–> </head><body><form name="f" action="" method="post">用户名:<input type="text" name="user.username">密码:<input type="password" name="user.password"><br/><input type="button" value="submit1" onclick="javascript:document.f.action='login1';document.f.submit();"><input type="button" value="submit2" onclick="javascript:document.f.action='login2';document.f.submit();"><input type="button" value="submit3" onclick="javascript:document.f.action='login3';document.f.submit();"><input type="button" value="submit4" onclick="javascript:document.f.action='login4';document.f.submit();"></form> </body></html>

其中我们新建一个表单,并提供两个文本输入框,用来输入用户名和密码,在action类那里进行验证是否正确,表单里有4个提交按钮,onclick属性是JavaScript代码,点击第一个提交到login1的action里去,其它的类似。

对应的struts.xml配置文件代码如下,通过不同的方式获取web元素配置也是一样,即下面介绍的四种方法的struts.xml配置文件配置是一样的,代码如下:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"""><struts><constant name="struts.enable.DynamicMethodInvocation" value="true"></constant><constant name="struts.devMode" value="true"></constant><package name="login" namespace="/" extends="struts-default"><action name="login*" class="com.gk.login.LoginAction{1}"><result name="success">/user_login_success.jsp</result><result name="error">/user_login_error.jsp</result></action></package></struts>

在这个小项目中,还有一个java类User类,即JavaBean,里面提供了用户名和密码属性,和相应的Getter()和Setter()方法,放在src下的tom.xg.bean下,代码如下:

package tom.xg.bean;public class User {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

以上的index.jsp,struts.xml以及User.java文件都是下面四种方式我们所需要的,其实还有提交成功后跳转的页面以及提交失败后跳转的页面也是一样的,在方式一中介绍。

方法一:ActionContext方式:

3.接下来介绍第一种方法,就是使用ActionContext方式,即Action上下文环境的方式,一般在Action类的构造方法,或execute()方法中获取。依赖于容器。

新建一个LoginAction1类,放在com.gk.login包下,代码如下:

package com.gk.login;import java.util.Map;import tom.xg.bean.User;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class LoginAction1 extends ActionSupport {private User user;//声明User类的对象user//声明Map类型的三个对象,request,session,applicationprivate Map request;private Map session;private Map application;/* * 构造方法 */public LoginAction1() {//主动获取的,知道request,session,application是怎么来的request = (Map) ActionContext.getContext().get("request");session = ActionContext.getContext().getSession();application = ActionContext.getContext().getApplication();}public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String execute() {if (user.getUsername().trim().equals("abc")&& user.getPassword().equals("123")) {//利用键值对来存放数值进去request,session,applicationrequest.put("r1", "r1");session.put("s1", "s1");application.put("a1", "a1");return "success";} else {return "error";}}}

只有不断找寻机会的人才会及时把握机会。

Struts2中访问web元素

相关文章:

你感兴趣的文章:

标签云: