Struts2学习笔记——AccessWebElements(访问web元素)

可以使用Map类型来接收HttpServletRequest  ServletContext和HttpSession。

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
  	<constant name="struts.devMode" value="true" />
  	<!-- 通配符的使用 -->
  	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
  	
  	<constant name="struts.i18n.encoding" value="GBK" />
  	 
  	<package name="login" namespace="/login" extends="struts-default">
        <action name="login*" class="com.smile.struts2.login.action.LoginAction{1}" >
            <result name="success"> /user_login_success.jsp  </result>
        </action>
    </package>

</struts>
然后有四种不同的方式来对这三个进行操作:

LoginAction1:

package com.smile.struts2.login.action;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.smile.struts2.front.model.User;

public class LoginAction1 extends ActionSupport{
	
	private Map request;
	private Map session;
	private Map application;
	private User user;
	
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public LoginAction1(){
		request = (Map)ActionContext.getContext().get("request");
		session = ActionContext.getContext().getSession();
		application = ActionContext.getContext().getApplication();
	}
	
	public String execute(){
		System.out.println(user.getName()+" "+user.getPassword());
		request.put("r1", "帅气");
		session.put("s1", "帅气");
		application.put("a1", "帅气");
		return SUCCESS;
	}
	
}
LoginAction2:

package com.smile.struts2.login.action;

import java.util.Map;

import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
    
    private Map<String ,Object> request;
    private Map<String ,Object> session;
    private Map<String ,Object> application;
    
    
    
    public String execute(){
        request.put("r1", "帅气");
        session.put("s1", "帅气");
        application.put("a1", "帅气");
        return SUCCESS;
    }



    public void setRequest(Map<String, Object> request) {
        this.request = request;
    }



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



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


LoginAction3:

package com.smile.struts2.login.action;

import java.util.Map;

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

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

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();
	}
	
	public String execute(){
		request.setAttribute("r1", "帅气");
		session.setAttribute("s1", "帅气");
		application.setAttribute("a1", "帅气");
		return SUCCESS;
	}
	
}
LoginAction4:

package com.smile.struts2.login.action;

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

import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction4 extends ActionSupport implements ServletRequestAware {
	
	private HttpServletRequest request;
	private HttpSession session;
	private ServletContext application;
	
	
	public String execute(){
		request.setAttribute("r1", "帅气");
		session.setAttribute("s1", "帅气");
		application.setAttribute("a1", "帅气");
		return SUCCESS;
	}


	public void setServletRequest(HttpServletRequest servletRequest) {
		this.request = servletRequest;
		this.session = servletRequest.getSession();
		this.application = servletRequest.getSession().getServletContext();
	}
	
}
一般我们使用第二种。

index.jsp文件如下:

<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>

<% String context = request.getContextPath(); %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
取得Map类型request,session,application,真实类型 HttpServletRequest, HttpSession, ServletContext的引用:
<ol>
	<li>前三者:依赖于容器</li>
	<li>前三者:IOC</li> (只用这种)
	<li>后三者:依赖于容器</li>
	<li>后三者:IOC</li>
</ol>
<br />
<form name="f" action="" method="post">
用户名:<input type="text" name="user.name"/>
密码:<input type="text" name="user.password"/>
<br />
<input type="button" value="submit1" οnclick="javascript:document.f.action='login/login1';document.f.submit();" />
<input type="button" value="submit2" οnclick="javascript:document.f.action='login/login2';document.f.submit();" />
<input type="button" value="submit3" οnclick="javascript:document.f.action='login/login3';document.f.submit();" />
<input type="button" value="submit4" οnclick="javascript:document.f.action='login/login4';document.f.submit();" />
</form>
	
</body>
</html>
这样我们在返回的结果jsp文件中可以这样接收:

<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
    <%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
	User Login Success!
	<br />
	<s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br />
	<s:property value="#session.s1"/> | <%=session.getAttribute("s1") %> <br />
	<s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br />
	<s:property value="#attr.a1"/><br />
	<s:property value="#attr.s1"/><br />
	<s:property value="#attr.r1"/><br />
	<s:debug></s:debug>
	<br />
</body>
</html>
如果为了防止配置文件的混淆,可以使用include的方式:

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
  	<constant name="struts.devMode" value="true" />
  	<!-- 通配符的使用 -->
  	<constant name="struts.enable.DynamicMethodInvocation" value="false" />
  	<constant name="struts.i18n.encoding" value="GBK" />
  	
  	<!-- 使用include主要为了方便项目管理,避免代码的冲突 -->
	<include file="login.xml"></include>
</struts>
login.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
  	<package name="login" namespace="/login" extends="struts-default">
        <action name="login*" class="com.smile.struts2.login.action.LoginAction{1}" >
            <result name="success"> /user_login_success.jsp  </result>
        </action>
    </package>

</struts>

与上面的效果也是一样的。

设置默认的action可以使用:

<default-action-ref name="index"></default-action-ref>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值