<%@ 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>