一、Struts2页面配置

在struts2中页面可以分为两种,全局页面和局部页面。

1、全局页面:

在一个<package></package>标签内的多个action都要跳转到该页面,则该页面是全局页面。

全局页面的配置:可以在<package></package>标签内使用<global-result></global-result>标签来配置。

注意:该配置只有在该<package>标签内才有效。

<struts>
<package name="demo1" extends="struts-default" namespace="/">
<!--
1、使用<global-results>标签来配置全局页面
2、该全局页面的配置只在该<package>标签内有效
-->
<global-results>
<result name="success">/jsp/success.jsp</result>
</global-results>
<action name="test" class="com.jack.action.PageAction"></action>
<action name="test1" class="com.jack.action.PageAction"></action>
</package>
</struts>

2、局部页面:

在一个<package></package>标签内只有一个action要跳转到该页面,则该页面为局部页面。

局部页面直接在<action>标签内使用<result>标签配置

<struts>
<package name="demo1" extends="struts-default" namespace="/">
<action name="test" class="com.jack.action.PageAction">
<result name="success">/jsp/success.jsp</result>
</action>
<action name="test1" class="com.jack.action.PageAction">
<result name="success">/jsp/error.jsp</result>
</action>
</package>
</struts>

3、注意

当一个Action同时配置了全局页面和局部页面 ,Action只会显示局部页面。

<struts>
<package name="demo1" extends="struts-default" namespace="/">
<!--
1、使用<global-results>标签来配置全局页面
2、该全局页面的配置只在该<package>标签内有效
-->
<global-results>
<result name="success">/jsp/success.jsp</result>
</global-results>
<action name="test" class="com.jack.action.PageAction"></action>
<action name="test1" class="com.jack.action.PageAction">
<!--
该action同时配置了两个页面
只会相应局部页面
-->
<result name="success">/jsp/error.jsp</result>
</action>
</package>
</struts>

4、result标签中的type属性

在result标签内,有一个属性为type,该属性表示action到配置路径中的方式。该属性有以下的值。

在值中要重点记住chain、dispatcher、redirect、redirectAction四个属性。

chain和redirectAction用于Action的跳转,chain一般不用,因为存在缓存问题。

dispatcher和redirect用于jsp页面的跳转,dispatcher为默认方式。

属性 说明
chain 用来处理action链的,属于转发方式,跳转的页面仍能获得上个页面的值,如request信息
dispatcher 用来转向页面,属于转发方式,通常处理jsp,是type属性的默认值
freemarker 用来整合FreeMarker模板结果类型
httpheader 用来处理特殊的http行为结果类型
redirect 重定向于一个URL,被跳转的页面中丢失传递的信息
redirectAction 重定向到一个Action,被跳转的页面中丢失传递的信息
stream 向浏览器发送InputStream对象,通常用于处理文件的下载,同时还可用于Ajax
velocity 用来整合Velocity模板结果类型
xslt 用来整合XML/XSLT结果类型
plainText 显示原始文件内容,例如文件源代码
postback 是的当前请求数据以表单形式提交

二、使用Servlet API操作域对象

1、使用ActionContext对象来操作域对象

public class ActionContextDemo extends ActionSupport {

    /**
* 使用ActionContext对象来操作域对象
*/ public String execute(){
//1、调用ActionContext对象的getContext方法的到实例
ActionContext actionContext = ActionContext.getContext(); //1、操作request域
actionContext.put("username", "张三");
actionContext.put("address", "中国 湖北");
actionContext.put("tel", "1234560"); //2、操作application域
actionContext.getApplication().put("username", "张三");
actionContext.getApplication().put("address", "中国 湖北");
actionContext.getApplication().put("tel", "1234560"); //3、操作session域
actionContext.getSession().put("username", "张三");
actionContext.getSession().put("address", "中国 湖北");
actionContext.getSession().put("tel", "1234560"); return SUCCESS;
}
}

2、使用ActionContext对象来接受表单提交的数据

public class ActionContextDemo extends ActionSupport {

    /**
* 使用ActionContext对象来获取request对象
*/ public String execute(){
//1、调用ActionContext对象的getContext方法的到实例
ActionContext actionContext = ActionContext.getContext();
/**
* 2、使用该对象的getparamenters方法得到一个map集合
* map集合中的key是表单输入项中name属性的值,value是输入的值
*/
Map<String, Object> map = actionContext.getParameters();
//3、得到所有的key
Set<String> set = map.keySet();
for (String key : set) {
//4、根据key获得每个值,值的形式是数组,因为可能存在复选框
Object[] object= (Object[]) map.get(key);
System.out.println(key+":"+Arrays.toString(object));
}
return NONE;
}
}

3、使用ServletActionContext来操作域对象

public class ServletActionContextDemo extends ActionSupport{

    //使用ServletActionContext来操作域对象

    public String execute(){
//1、得到ServletActionContext对象
HttpServletRequest request =ServletActionContext.getRequest();
//2、操作request域
request.setAttribute("username", "李四");
request.setAttribute("address", "湖北 十堰");
request.setAttribute("tel", "452133"); //3、操作session域
request.getSession().setAttribute("username", "李四");
request.getSession().setAttribute("address", "湖北 十堰");
request.getSession().setAttribute("tel", "452133"); //4、操作application域
request.getServletContext().setAttribute("username", "李四");
request.getServletContext().setAttribute("address", "湖北 十堰");
request.getServletContext().setAttribute("tel", "452133");
return SUCCESS;
} }

4、使用ServletActionContext来获取表单提交的数据

public class ServletActionContextDemo extends ActionSupport{

    //使用ServletActionContext来操作Servlet的api

    public String execute(){
//1、得到ServletActionContext对象
HttpServletRequest request =ServletActionContext.getRequest();
//2、得到每一个输入项的值
String username =request.getParameter("username");
String address =request.getParameter("address");
String tel =request.getParameter("tel"); System.out.println("username:"+username+",address:"+address+",tel:"+tel);
return NONE;
} }

5、使用ServletRequestAware来操作域对象

/**
* 1、实现ServletRequestAware接口
*/
public class ServletRequestAwareDemo extends ActionSupport implements
ServletRequestAware { /**
* 2、声明一个HttpServletRequest对象
*/
private HttpServletRequest request; /**
* 3、实现接口的方法 返回创建的request对象
*/
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
} /**
* 4、使用request操作域对象
*/
public String execute() { //2、操作request域
request.setAttribute("username", "李四");
request.setAttribute("address", "湖北 十堰");
request.setAttribute("tel", "452133"); //3、操作session域
request.getSession().setAttribute("username", "李四");
request.getSession().setAttribute("address", "湖北 十堰");
request.getSession().setAttribute("tel", "452133"); //4、操作application域
request.getServletContext().setAttribute("username", "李四");
request.getServletContext().setAttribute("address", "湖北 十堰");
request.getServletContext().setAttribute("tel", "452133");
return SUCCESS;
}
}

6、使用ServletRequestAware来获取表单提交的数据

/**
* 1、实现ServletRequestAware接口
*/
public class ServletRequestAwareDemo extends ActionSupport implements
ServletRequestAware { /**
* 2、声明一个HttpServletRequest对象
*/
private HttpServletRequest request; /**
* 3、实现接口的方法 返回创建的request对象
*/
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
} /**
* 4、使用request的方法得到每一个输入项的值
*/
public String execute() { String username = request.getParameter("username");
String address = request.getParameter("address");
String tel = request.getParameter("tel"); System.out.println("username:" + username + ",address:" + address
+ ",tel:" + tel);
return NONE;
}
}

项目源代码见下一篇博客

Struts2页面配置和访问servlet API的更多相关文章

  1. 关于Struts2自动装配和访问Servlet API

    自动装配 1.根据属性的getter和setter获取值  index.jsp <s:form action="hello" method="POST"& ...

  2. struts2总结五: Strut2 访问Servlet API

    一.间接访问 public String execute() throws Exception { this.message="hello,this is put into applicat ...

  3. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  4. 配置Struts2及Struts2访问servlet api的方式

    Struts2的起源与背景 在很长的一段时间内,在所有的MVC框架中,Struts1处于绝对的统治地位,无论是从市场的普及范围,还是具体的使用者数量. 其他MVC框架都无 法与其相比,作为一一款优秀的 ...

  5. 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  6. struts2访问servlet API

    搭建环境: 引入jar包,src下建立struts.xml文件 项目配置文件web.xml. web.xml: <?xml version="1.0" encoding=&q ...

  7. Struts2(八)访问Servlet API

    一.Struts2中的Servlet API 1.1.struts2的Action实现了MVC中C层的作用 针对请求用户显示不同的信息 登录后段保存用户信息 ----session 保存当前在线人数等 ...

  8. Struts2学习二----------访问Servlet API

    © 版权声明:本文为博主原创文章,转载请注明出处 Struts2提供了三种方式去访问Servlet API -ActionContext -实现*Aware接口 -ServletActionConte ...

  9. struts2中访问servlet API

    Struts2中的Action没有与任何Servlet API耦合,,但对于WEB应用的控制器而言,不访问Servlet API几乎是不可能的,例如需要跟踪HTTP Session状态等.Struts ...

随机推荐

  1. Android-ContentProvider原理图

    ContentProvider的设计思想是模仿了Web里面的架构思想: Web服务器   对外暴露数据(提供被访问的地址Uri,并允许给客户端访问,也可以只让客户端访问某些行为) ContentPro ...

  2. Replication--Alwayson+复制发布

    场景:主服务器:RepServer1从服务器:RepServer2监听者:RepListener分发库:DisServer发布数据库:RepDB1配置:1>设置DisServer为分发服务器,在 ...

  3. ExtJS浏览器对象模型BOM——命名空间和用户代理对象、Cookie

    BOM(浏览器对象模型(BrowserObjectModel)),允许访问和操控浏览器窗口.研发者通过使用BOM,可移动窗口.更改状态栏文本.执行其它不与页面内容发生直接联系的操作. 本文将从ExtJ ...

  4. softmax,softmax loss和cross entropy的讲解

    1 softmax 我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等.这一篇主要介绍全连接层和损失层的内容, ...

  5. [转]解读Unity中的CG编写Shader系列6——不透明度与混合

    1.不透明度当我们要将两个半透的纹理贴图到一个材质球上的时候就遇到混合的问题,由于前面的知识我们已经知道了片段着色器以及后面的环节的主要工作是输出颜色与深度到帧缓存中,所以两个纹理在每个像素上的颜色到 ...

  6. 【算法】C++用链表实现一个箱子排序附源代码详解

    01 箱子排序 1.1 什么是分配排序? 分配排序的基本思想:排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O ...

  7. 通过cookie绕过验证码登录

    在我们做自动化的时候碰到一些比较难破解的验证码时是非常头疼的,一般来说最好的办法就是让开发屏蔽,这样最有益身心健康. 那么今天我介绍的这个方法也挺简单的,就是通过添加cookie的方式绕过验证码直接登 ...

  8. 使用canvas实现画中画效果的H5

    最近看到一个挺有趣的H5,主要效果就是通过不断的放缩来展示画中画,网上找了一下并没有这方面的实现代码,故决定原创一下,并分享出来 主要的思路就是通过canvas不断的写入图片,考虑到每一层的图片的位置 ...

  9. 数据结构65:快速排序算法(QSort,快排)

    上节介绍了如何使用起泡排序的思想对无序表中的记录按照一定的规则进行排序,本节再介绍一种排序算法——快速排序算法(Quick Sort). C语言中自带函数库中就有快速排序——qsort函数 ,包含在 ...

  10. 编程开发之--Java集合类继承与实现必备知识

    1.LinkedHashSet有序链式集合 举例: long startTime=System.currentTimeMillis(); LinkedHashSet oprTypeSet = new ...