博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2之web元素访问与模板包含与默认Action使用
阅读量:5281 次
发布时间:2019-06-14

本文共 6964 字,大约阅读时间需要 23 分钟。

  上一篇为大家介绍了如何使用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
{ 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+"/";%>              My JSP 'index.jsp' starting page    
Hello Struts2
name:<%=request.getAttribute("name") %>
password:<%=request.getAttribute("password") %>
name:<%=session.getAttribute("name") %>
password:<%=session.getAttribute("password") %>
name:<%=application.getAttribute("name") %>
password:<%=application.getAttribute("password") %>

   下面我们看一下第二种Map方式进行数据传递:依赖Struts2的实现:

/*** * Map方式进行数据传递:依赖Struts2 */@SuppressWarnings("serial")public class UserAction extends ActionSupport implements ModelDriven
,RequestAware,SessionAware,ApplicationAware{ private User user = new User(); private Map
request; private Map
session; private Map
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
request) { this.request = request; } public void setSession(Map
session) { this.session = session; } public void setApplication(Map
application) { this.application = application; } }

  jsp页面接收参数方式同上,就不在这里赘述。


  下面是我们的第三种原始数据类型参数传递:IOC方式:

/*** * 原始数据类型参数传递:IOC * IOC:控制反转 * 控制反转:原本自己控制的,交由别人控制 */@SuppressWarnings("serial")public class UserAction extends ActionSupport implements ModelDriven
{ 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
,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将不同的开发人员的配置文件进行引用。


  最后我们在来看一下默认Action的设置:

/index.jsp
/hello.jsp

  default-action-ref就是设置我们的默认访问action的配置信息,这样当我们在浏览器输入的URL地址找不到对应的Action时,默认会调用index.action

  到今天关于Struts2的Action方面内容已经为大家介绍完毕,下一篇我们一起探讨一个关于action下的result的配置,后续内容持续更新中...

转载于:https://www.cnblogs.com/AndroidJotting/p/6516910.html

你可能感兴趣的文章
awk 统计
查看>>
模板设计模式的应用
查看>>
实训第五天
查看>>
平台维护流程
查看>>
2012暑期川西旅游之总结
查看>>
12010 解密QQ号(队列)
查看>>
2014年辛星完全解读Javascript第一节
查看>>
装配SpringBean(一)--依赖注入
查看>>
java选择文件时提供图像缩略图[转]
查看>>
方维分享系统二次开发, 给评论、主题、回复、活动 加审核的功能
查看>>
Matlab parfor-loop并行运算
查看>>
string与stringbuilder的区别
查看>>
2012-01-12 16:01 hibernate注解以及简单实例
查看>>
iOS8统一的系统提示控件——UIAlertController
查看>>
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>
1.2 基础知识——关于猪皮(GP,Generic Practice)
查看>>
迭代器Iterator
查看>>
java易错题----静态方法的调用
查看>>
php建立MySQL数据表
查看>>