struts2笔记之第六讲
Struts2的Action访问Servlet API
1、可以通过ActionContext访问Servlet API 此种方式没有侵入性
使用方法如下:
*将登陆信息设置到session中
ActionContext.getContext().getSession().put("user", username);
*采用如下方式访问request对象
ActionContext.getContext().put("time", new Date());
*采用如下方式访问application对象
ActionContext.getContext().getApplication().put("我的应用程序", "我的应用程序");
*取得表单数据也可以用以下方式:request.getParameter();
String username = (String) ActionContext.getContext().getParameters().get("username");
2.在Struts2中默认为转发,也就是<result>标签中的type="dispatcher",type的属性可以修改为重定向
<result name="login" type="dispatcher">/login.jsp</result>
(type的默认值为dispatcher,就是type="dispatcher" 表示转发)
Struts2的重定向有两种:
*、type="redirect",可以重定向到任何一个web资源,如jsp或Action,如果要重定向到Action,需要写上后缀,xxxx.action
<result name="login" type="redirect">/login.jsp</result> <result name="login" type="redirect">login.action</result>
*、type="redirectAction" 可以重定向到Action,不需要写后缀,此种方式更通用些,不会因为后缀的改变影响配置
<result name="login" type="redirectAction">login</result>
3、关于Struts2的type类型,也就是Result类型,他们都实现了共同的接口Result,都实现了execute方法,
他们体现了策略模式(策略模式:可以配置的),
具体Result类型参见:struts-default.xml文件
<result-types> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/> <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/> <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/> <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/> <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/> <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/> <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/> <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" /> </result-types>
上面体现的策略模式,所以我们完全可以自己根据需求扩展Result类型
4、全局Result和局部Result
*局部的Result
<result name="login" type="redirect">/login.jsp</result>
* 全局Result
<global-results> <result name="login" type="redirect">/login.jsp</result> </global-results>
例子:
LoginAction.java文件
package com.struts2; import java.util.Date; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; public class LoginAction implements Action { private String username; private String password; /** * struts2 默认调用这个方法,返回字符串 * @return * @throws Exception */ public String execute() throws Exception{ if("admin".equals(username) && "admin".equals(password)){ //将登陆信息设置到session中 ActionContext.getContext().getSession().put("user", username); //采用如下方式访问request对象 ActionContext.getContext().put("time", new Date()); //采用如下方式访问application对象 ActionContext.getContext().getApplication().put("我的应用程序", "我的应用程序"); //取得表单数据也可以用以下方式 String username = (String) ActionContext.getContext().getParameters().get("username"); return "success"; }else{ return "error"; } } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
MustLoginAction.java文件
package com.struts2; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; public class MustLoginAction implements Action { @Override public String execute() throws Exception { if(ActionContext.getContext().getSession().get("user")==null){ //重定向到登陆页面 return LOGIN; }else{ return SUCCESS; } } }
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> <!--当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置--> <constant name="struts.configuration.xml.reload" value="true"/> <!--会提供更加友好的提示信息--> <constant name="struts.devMode" value="true"/> <!-- 需要继承struts-defaluts包,这样就拥有基本的功能 --> <package name="struts2" extends="struts-default"> <!-- 全局Result --> <global-results> <result name="login" type="redirect">/login.jsp</result> </global-results> <action name="login" class="com.struts2.LoginAction"> <result>/login_success.jsp</result> <result name="error">/login_error.jsp</result> </action> <action name="mustLogin" class="com.struts2.MustLoginAction" > <!-- type的默认值为dispatcher,就是type="dispatcher" 表示转发 --> <!-- <result name="login" type="dispatcher">/login.jsp</result> --> <!-- type="redirect",可以重定向到任何一个web资源,如jsp或Action,如果要重定向到Action,需要写上后缀,xxxx.action --> <!-- <result name="login" type="redirect">/login.jsp</result> --> <!-- <result name="login" type="redirect">login.action</result> --> <!-- type="redirectAction" 可以重定向到Action,不需要写后缀,此种方式更通用些,不会因为后缀的改变影响配置 --> <!-- <result name="login" type="redirectAction">login</result> --> <!-- 局部的Result --> <!-- <result name="login" type="redirect">/login.jsp</result> --> <result >/must_login.jsp</result> </action> </package> </struts>
index.jsp文件,核心内容
<a href="login.jsp">登陆</a> <br> <a href="mustLogin.action">访问受保护的页面</a> <br>
must_login.jsp文件加一句话:
该页面是受保护的
发表评论
-
Struts2文件上传
2014-10-29 17:00 0http://hanxin0311.iteye.com/blo ... -
struts2笔记之第八讲
2014-02-17 01:17 783struts2笔记之第八讲 导读:Struts2的命名空间和 ... -
struts2笔记之第七讲
2014-02-17 01:04 513struts2笔记之第七讲 导语:Struts2的Actio ... -
struts2笔记之第五讲
2014-02-15 17:01 363struts2笔记之第五讲 除了属性驱动模式、模型驱动模式外, ... -
struts2笔记之第四讲
2014-02-15 16:32 306struts2笔记之第四讲 Struts2对ModelDriv ... -
struts2笔记之第三讲
2014-02-15 16:27 488struts2笔记之第三讲 描述:struts2对团队开发的 ... -
struts2笔记之第二讲
2014-02-15 14:41 383struts2笔记之第二讲 1、 ... -
struts2笔记之第一讲
2014-02-15 00:53 466Struts2笔记之第一讲 前言:学技术以来,已经三年了,感 ... -
struts2笔记
2014-02-15 00:25 0Struts2笔记 前言: 需要注意sturs2需要运行在 ...
相关推荐
赵栋的Struts2笔记主要涵盖了2013年的相关知识,以下是根据笔记内容提炼出的一些关键知识点: 1. **URL与Action方法绑定**: 在Struts2中,通过URL直接调用Action类的方法是可能的。如果在URL中附加"!"后跟方法名...
在第六讲中,我们将深入探讨Struts2的输入验证机制,这是确保应用程序数据安全性和正确性的重要环节。Struts2的输入验证可以分为客户端验证和服务器端验证,两者都有其优点和适用场景。 首先,客户端验证通常使用...
本篇笔记将详细讲解Struts2中服务器端与客户端对表单数据的校验方式。 首先,Struts2提供了一系列内置的校验器,包括: 1. Irequired:检查字段是否为空,是必填项。 2. IIrequiredstring:验证字段是否为非空字符...
**Struts2笔记** Struts2是MVC(模型-视图-控制器)设计模式的一个实现,它为Java Web开发提供了强大的控制层。Struts2的核心是Action类,它处理用户请求并调用业务逻辑。以下是一些关键知识点: 1. **...
在第18讲“Struts2深入探索”中,我们将会探讨Struts2的一些高级特性和深入使用的技巧。这篇学习笔记将主要围绕以下几个核心知识点展开: 1. **拦截器(Interceptors)**: Struts2的核心特性之一是拦截器,它允许...
### servlet和struts2笔记 #### 一、Servlet 基础 **Servlet** 是 Java Web 开发中的一种核心技术,它被设计用于处理客户端发送到服务器的 HTTP 请求,并且能够生成响应。Servlet 可以看作是服务器端的小程序,...
本篇学习笔记将深入探讨Struts2的入门与配置,继续上一讲的内容。 首先,Struts2的基础入门涉及到以下几个核心概念: 1. **Action类**:在Struts2中,业务逻辑通常封装在Action类中。Action类是处理用户请求的主体...
### Struts2学习笔记2012 #### 一、建立一个Struts2工程 **步骤详解:** 1. **创建Web项目:** - 在MyEclipse中选择“File” > “New” > “Dynamic Web Project”,创建一个新的Web项目。 2. **解压并配置...
Struts2是一个强大的Java web开发框架,它极大地简化了基于MVC模式的应用程序构建过程。在Struts2中,拦截器扮演着至关重要的角色,它们是实现业务逻辑和控制流程分离开来的重要组件。本篇将深入探讨Struts2的核心...
在"Struts2学习笔记四(第4讲.Struts2的类型转换续)"中,我们将会深入探讨Struts2中的类型转换机制,这是一个核心特性,用于处理Action类属性与HTTP请求参数之间的数据类型转换。 在HTTP请求中,数据通常是字符串...
其中,**前端控制器模式**是Struts2中最为关键的设计模式之一。这种模式的主要作用是集中处理所有的HTTP请求,并将请求转发给合适的组件处理。 ### 2. Struts2快速入门案例 #### 第一步:创建Web项目 在MyEclipse...
2. **环境搭建**:(一)环境搭建.txt可能包含了安装和配置Struts2框架的基础步骤,这通常包括添加Struts2库到项目依赖、配置web.xml文件、创建第一个Struts2应用等。 3. **UploadServlet.java**:在Struts2中,...
在第19讲“Struts2深入探索”中,我们将继续深入理解Struts2的核心特性和工作原理,这包括但不限于配置、拦截器、插件、以及源码分析。以下是关于Struts2的一些关键知识点: 1. **MVC模式**:Struts2遵循Model-View...
### Struts2培训笔记 #### 一、Struts2简介 **MVC框架**:Struts2是一个基于Java的企业级Web应用开发框架,遵循MVC(Model-View-Controller)设计模式。 - **M(Model)**:业务逻辑处理部分,通常指与数据库交互...
在本篇“Struts2学习笔记十一”中,我们将深入探讨Struts2的核心拦截器及其应用。 **1. 拦截器的概念** 拦截器是AOP(面向切面编程)的一部分,在Struts2中,它们作为一系列可插入的处理链,可以在Action执行前后...
本讲主要探讨Struts2的校验框架,它提供了对用户输入数据进行验证的功能,确保数据的有效性和安全性。 在传统的MVC模式中,数据验证通常在控制器或模型层进行,但在Struts2中,校验逻辑被移到了专门的校验框架中,...
在第九讲中,我们将深入探讨Struts2的校验框架,这是一个非常重要的功能,它有助于确保输入数据的准确性和完整性,防止非法数据导致的系统异常。 在传统的Java web开发中,数据验证通常在服务器端进行,如Servlet或...
- Struts2有许多官方和第三方插件,如i18n、json、freemarker等,它们的配置在`struts-plugin.xml`中完成。 8. **Action与Service层整合** - Spring管理Service层对象,Struts2通过Spring插件注入Service,实现...
Servlet、JSP、Struts2笔记 Servlet基础 Servlet是运行在服务器上的程序,使用Java语言编译,并且使用Servlet接口来实现动态界面。Servlet需要接受客户端发送的请求,并将处理结果以响应的形式响应给客户端。 ...