Struts2之web元素访问与模板包含与默认Action使用
上一篇为大家介绍了如何使用Action进行参数接收,以及简单的表单验证,本篇为大家介绍一下关于Action访问web元素的三种方式(request、session、application);模板包含(include);默认Action的使用。
下面我先来看一下Action如何访问web元素:1、Map方式进行数据传递:IOC(控制反转);2、Map方式进行数据传递:依赖Struts2;3、原始数据类型参数传递:IOC;4、原始数据类型进行参数传递:依赖Struts2,我们接下来一个一个的为大家介绍,方法有很多,大家最终根据自己的习惯自行选择。下面我们先从Map方式进行数据传递开始介绍,这里简单介绍一下IOC的概念,IOC被称为控制反转,通俗来讲就是:原本自己控制的,交由别人控制了。下面我们看一下如何使用IOC实现用Map来进行数据的传递。
这里我们还是接上一个工程继续实现,使用ModelDriven的形式将用户传入参数进行接收。我的Action对象:
/***
* Map方式进行数据传递:IOC(控制反转)
*/
@SuppressWarnings("serial")
public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User();
private Map request;
private Map session;
private Map application; public UserAction(){
request = (Map) ActionContext.getContext().get("request");//控制翻转
session = ActionContext.getContext().getSession();//控制翻转
application = ActionContext.getContext().getApplication();//控制翻转
} @Override
public String execute() throws Exception {
return SUCCESS;
} public String login(){
System.out.println("name="+user.getName()+" Pwd="+user.getPassword());
//使用request方式传参
request.put("name", user.getName()+"");
request.put("password", user.getPassword()+""); //使用session方式传参
session.put("name", user.getName()+"");
session.put("password", user.getPassword()+""); //使用application方式传参
application.put("name", user.getName()+"");
application.put("password", user.getPassword()+"");
return SUCCESS;
} public User getModel() {
return user;
} }
我们的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>
Hello Struts2<br>
name:<%=request.getAttribute("name") %><br>
password:<%=request.getAttribute("password") %><br><br> name:<%=session.getAttribute("name") %><br>
password:<%=session.getAttribute("password") %><br><br> name:<%=application.getAttribute("name") %><br>
password:<%=application.getAttribute("password") %><br>
</body>
</html>
下面我们看一下第二种Map方式进行数据传递:依赖Struts2的实现:
/***
* Map方式进行数据传递:依赖Struts2
*/
@SuppressWarnings("serial")
public class UserAction extends ActionSupport implements ModelDriven<User>,RequestAware,SessionAware,ApplicationAware{ private User user = new User();
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application; @Override
public String execute() throws Exception {
return SUCCESS;
} public String login(){
System.out.println("name="+user.getName()+" Pwd="+user.getPassword());
//使用request方式传参
request.put("name", user.getName());
request.put("password", user.getPassword()); //使用session方式传参
session.put("name", user.getName());
session.put("password", user.getPassword()); //使用application方式传参
application.put("name", user.getName());
application.put("password", user.getPassword());
return SUCCESS;
} public User getModel() {
return user;
} 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;
} }
jsp页面接收参数方式同上,就不在这里赘述。
下面是我们的第三种原始数据类型参数传递:IOC方式:
/***
* 原始数据类型参数传递:IOC
* IOC:控制反转
* 控制反转:原本自己控制的,交由别人控制
*/
@SuppressWarnings("serial")
public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User();
private HttpServletRequest request;
private HttpSession session;
private ServletContext application; public UserAction(){
request = ServletActionContext.getRequest();
session = request.getSession();
application = session.getServletContext();
} @Override
public String execute() throws Exception {
return SUCCESS;
} public String login(){
System.out.println("name="+user.getName()+" Pwd="+user.getPassword());
//使用request方式传参
request.setAttribute("name", user.getName());
request.setAttribute("password", user.getPassword()); //使用session方式传参
session.setAttribute("name", user.getName());
session.setAttribute("password", user.getPassword()); //使用application方式传参
application.setAttribute("name", user.getName());
application.setAttribute("password", user.getPassword());
return SUCCESS;
} public User getModel() {
return user;
}
}
接下来是我们原始数据类型进行参数传递:依赖Struts2
/***
* 原始数据类型进行参数传递:依赖Struts2
*/
@SuppressWarnings("serial")
public class UserAction extends ActionSupport implements ModelDriven<User>,ServletRequestAware{ private User user = new User();
private HttpServletRequest request;
private HttpSession session;
private ServletContext application; @Override
public String execute() throws Exception {
return SUCCESS;
} public String login(){
System.out.println("name="+user.getName()+" Pwd="+user.getPassword());
//使用request方式传参
request.setAttribute("name", user.getName());
request.setAttribute("password", user.getPassword()); //使用session方式传参
session.setAttribute("name", user.getName());
session.setAttribute("password", user.getPassword()); //使用application方式传参
application.setAttribute("name", user.getName());
application.setAttribute("password", user.getPassword());
return SUCCESS;
} public User getModel() {
return user;
} public void setServletRequest(HttpServletRequest request) {
this.request = request;
session = request.getSession();
application = session.getServletContext();
}
}
到这里关于Action访问web元素进行参数传递的知识就为大家介绍完毕,接下来我们在简单了解一下模块包含和默认Action的使用:
首先是我们的模块包含(include),这个主要是在我的struts.xml中使用,我们知道一般我们的开发都是协作开发,不同的人负责不同的模块,如果都在一个配置文件上进行修改,那样比较麻烦,这是我们就可以使用include属性,不同的开发人员管理着自己的struts.xml文件,最后通过include将不同的开发人员的配置文件进行引用。
<?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.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" /> <include file="struts2.xml"></include> </struts>
最后我们在来看一下默认Action的设置:
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index"></default-action-ref>
<action name="index" class="com.edu.action.UserAction">
<result>
/index.jsp
</result>
</action>
<!-- 访问控制 -->
<action name="hell" class="com.edu.action.UserAction">
<result>
/hello.jsp
</result>
</action>
</package>
default-action-ref就是设置我们的默认访问action的配置信息,这样当我们在浏览器输入的URL地址找不到对应的Action时,默认会调用index.action
<default-action-ref name="index"></default-action-ref>
到今天关于Struts2的Action方面内容已经为大家介绍完毕,下一篇我们一起探讨一个关于action下的result的配置,后续内容持续更新中...
Struts2之web元素访问与模板包含与默认Action使用的更多相关文章
- struts2获取web元素的方式和方法
获取web资源的方式按是否与servlet耦合可分为两种,再细分按照依赖方式又有两种即 依赖容器 和 依赖注入 什么是依赖容器 就是依赖 ActionContext或者ServletActionC ...
- Struts2学习---namespace,file模块包含,默认action
我们上一节已经将action基本的配置和使用讲了,接下来我们讲以下struts一些小知识点: namespac: 上一节学习action的时候我们访问我们jsp文件时候使用的: http://loca ...
- struts2获取web元素(request、session、application)
一.Action中获取 第一种方式: 通过ActionContext,这种方式取到的对象是Map类型 import java.util.Map; import com.opensymphony.xwo ...
- [转]Struts2理解--动态方法和method属性及通配符_默认Action
众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...
- Struts2理解--动态方法和method属性及通配符_默认Action
众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...
- Struts2 访问web元素
访问web元素的四种方法(耦合,依赖注入).(耦合,非依赖注入).(非耦合,依赖注入).(非耦合,非依赖注入) 耦合:可以得到HttpServletResponse,HttpServletReques ...
- Struts2中访问web元素的四种方式
Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...
- Struts2访问web元素的各种方法
1.通过RequestAware,SessionAware,ApplicationAware获取: 在Struts2中不能直接访问Request,Session,Application元素,但是可以使 ...
- Struts2学习---简单的数据校验、访问Web元素
1.简单的数据校验 在action里面我们已经给出了一个数据校验: public String execute() { if(user.getUsername().equals("usern ...
随机推荐
- Java-Tomcat for Mac配置
1.eclipse version: Eclipse Java EE IDE for Web Developers. Version: Oxygen.1 Release (4.7.1) Build i ...
- vim介绍/vim颜色显示和移动光标/ vim一般模式下移动光标/ vim一般模式下复制、剪切和粘贴
5.1 vim介绍 5.2 vim颜色显示和移动光标 5.3 vim一般模式下移动光标 5.4 vim一般模式下复制.剪切和粘贴 vim 是vi的升级版本 vim 带有颜色显示 安装vim : y ...
- Unity3d游戏开发中使用可空类型(Nullable Types)
你怎么确定一个Vector3,int,或float变量是否被分配了一个值?一个方便的方式就是使用可空类型! 有时变量携带重要信息,但仅仅有在特定的游戏事件发生时触发.比如:一个角色在你的游戏可能闲置, ...
- Linux 找不到php.ini
在部署环境中利用phpinfo()查看,显示php.ini 路径为/usr/local/php5/lib 但是到对应路径中,找不到php.ini文件,在网上找到相关方法,留下备注. Configura ...
- InstallShield 制作MSI
1. click [project Assistant] 2. select [Build Installation], open this tab asfollow: 3.whenbuild ok ...
- Python之XML解析详解
什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这 ...
- linux环境下执行RF测试脚本
1. 测试执行 测试管理平台需根据用户选中的测试案例,按照相应格式对执行启动命令进行组装和发送,触动案例的自动化测试执行. 命令格式根据测试模式(以项目为单位.以测试集为单位.以案例为单位)具有不同的 ...
- java List分批处理
java List分批处理,例如对List中的数据进行批量插入. 方法一: /** * ClassName:Test List分批处理 * @author Joe * @version * @sinc ...
- 使用 CSV 文件存储
将爬取到的数据以 CSV 文件形式存储: import csv import requests req = requests.get("http://www.baidu.com/" ...
- 3ds Max导出FBX动画模型在OSG中使用
3ds Max做好动画模型 导出选项:包含-动画-附加选项-勾选使用场景名(这样动画名就是场景名)高级选项-单位-勾选自动(否则导出的模型很小) 导出文件名假设a.fbx使用osgconv工具旋转坐标 ...