<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
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 'web_001.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>
Request:<s:property value="#request.web_request_key"/><br/>
Session:<s:property value="#session.web_session_key"/><br/>
Application:<s:property value="#application.web_application_key"/><br/>
用户名: <s:property value="#request.user_name"/><br/>
密 码: <s:property value="#request.password"/><br/>
学 校: <s:property value="#request.school"/><br/>
描 述: <s:property value="#request.remark"/><br/>
<s:debug></s:debug>
</body>
</html>
Struts2 中Action 访问web 元素
是指Action中访问request,session,application中的数据。
request,session,application ,HttpServletRequest,HttpSession,ServletContext
前三者都有依赖Container,IOC,后三者也有,Conctainer,IOC
使用最多的也就是前三者的IOC(控制反转)。
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>
Struts2中访问Web 元素有四种方法。
其中使用最多最常用的就是"控制反转和依赖注入"思想.<br/>
<br/>
常用方法开发基本步骤:<br/>
1:Action 访问Web元素需要实现接口实现<br/>
实现RequestAware,SessionAware,ApplicatoinAware接口<br/>
使用setXxx()方法设置Map值。<br/>
2: 通过使用struts.xml配置<br/>
3:视图展示结果<br/>
通过使用<s:property name=""/> 获取的数据值可以使用#request.key #session.key #application.key<br/>
<br/>
举例如下:
web 元素
<!-- //领域模型页面传递参数 name名称的定义
<form action="/web_action/web.action">
用户名:<input name="user_model.user_name" value="" maxlength="50"/><br/>
密 码:<input name="user_model.password" value="" maxlength="50"/><br/>
学 校:<input name="user_model.school" value="" maxlength="50"/><br/>
描 述:<input name="user_model.remark" value="" maxlength="50"/><br/>
<input type="submit" name="submit" value="提交"/>
</form>
-->
<form action="/web_action/web.action">
用户名:<input name="user_name" value="" maxlength="50"/><br/>
密 码:<input name="password" value="" maxlength="50"/><br/>
学 校:<input name="school" value="" maxlength="50"/><br/>
描 述:<input name="remark" value="" maxlength="50"/><br/>
<input type="submit" name="submit" value="提交"/>
</form>
</body>
</html>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="i18n" value="utf-8"></constant> <!-- <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <package name="default" namespace="/" extends="struts-default"> <default-action-ref name="index" /> <global-results> <result name="error">/error.jsp</result> </global-results> <global-exception-mappings> <exception-mapping exception="java.lang.Exception" result="error"/> </global-exception-mappings> <action name="index"> <result type="redirectAction"> <param name="actionName">HelloWorld</param> <param name="namespace">/example</param> </result> </action> </package> <include file="example.xml"/> --> <!-- Add packages here --> <!-- 默认ACTION的执行 <package name="default" namespace="/" extends="struts-default"> <action name="helloworld"> <result>/helloworld.jsp</result> </action> </package> --> <package name="web" namespace="/web_action" extends="struts-default"> <action name="web" class="com.summary.action.AccessWebElementsDemo01" method="add"> <result name="success">/path_file/web_001.jsp</result> </action> </package> </struts>
package com.summary.action;
import java.util.Map;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.apache.struts2.interceptor.ApplicationAware;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.summary.model.UserModel;
public class AccessWebElementsDemo01 extends ActionSupport implements ModelDriven<UserModel>,RequestAware,SessionAware,ApplicationAware{
/**
*
*/
private static final long serialVersionUID = -1843136642468284550L;
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application;
//域模型接受参数需要实例化此域模型 使用领域模型有哥缺点就是在视图展示页面中出现;名称为:领域模型实力对象.对象名 如:<input name="user_model.user_name" value="" maxlength="50"/>
//private UserModel user_model;
//属性接受参数
/*
private String user_name;
private String password;
private String school;
private String remark;
*/
//领域模型驱动
private UserModel user_model = new UserModel();
public String add() {
System.out.println("========访问web元素=======");
request.put("web_request_key", "web_request_value");
request.put("user_name", user_model.getUser_name());
request.put("password", user_model.getPassword() );
request.put("school", user_model.getSchool());
request.put("remark", user_model.getRemark());
session.put("web_session_key", "web_session_value");
application.put("web_application_key", "web_application_value");
return SUCCESS;
}
public Map<String, Object> getRequest() {
return request;
}
public void setRequest(Map<String, Object> request) {
this.request = request;
}
public Map<String, Object> getSession() {
return session;
}
public void setSession(Map<String, Object> session) {
this.session = session;
}
public Map<String, Object> getApplication() {
return application;
}
public void setApplication(Map<String, Object> application) {
this.application = application;
}
/*
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public UserModel getUser_model() {
return user_model;
}
public void setUser_model(UserModel user_model) {
this.user_model = user_model;
}
*/
//领域模型 务必重写getModel()方法
public UserModel getModel() {
return user_model;
}
}
package com.summary.model;
public class UserModel {
private String user_name="";
private String password="";
private String school="";
private String remark="";
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
Action模块包含,其实模块包含就是使用struts.xml文件中的<include file="*.xml"/>
Action的默认Action是通过使用
<default-action-ref name="index"></default-action-ref>
<default-action-ref name="index"></default-action-ref>
<default-class-ref class="com.demo.action.DemoAction01"></default-class-ref>
<default-interceptor-ref name="xxx"></default-interceptor-ref>