`
圣灵君
  • 浏览: 4355 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts2笔记之第六讲

阅读更多
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 笔记

    赵栋的Struts2笔记主要涵盖了2013年的相关知识,以下是根据笔记内容提炼出的一些关键知识点: 1. **URL与Action方法绑定**: 在Struts2中,通过URL直接调用Action类的方法是可能的。如果在URL中附加"!"后跟方法名...

    struts2学习笔记六(第6讲.Struts2的输入校验续一)

    在第六讲中,我们将深入探讨Struts2的输入验证机制,这是确保应用程序数据安全性和正确性的重要环节。Struts2的输入验证可以分为客户端验证和服务器端验证,两者都有其优点和适用场景。 首先,客户端验证通常使用...

    struts2笔记之校验表单信息

    本篇笔记将详细讲解Struts2中服务器端与客户端对表单数据的校验方式。 首先,Struts2提供了一系列内置的校验器,包括: 1. Irequired:检查字段是否为空,是必填项。 2. IIrequiredstring:验证字段是否为非空字符...

    Struts2笔记+Hibernate3.6笔记+Spring3笔记

    **Struts2笔记** Struts2是MVC(模型-视图-控制器)设计模式的一个实现,它为Java Web开发提供了强大的控制层。Struts2的核心是Action类,它处理用户请求并调用业务逻辑。以下是一些关键知识点: 1. **...

    struts2学习笔记十八(第18讲.Struts2深入探索)

    在第18讲“Struts2深入探索”中,我们将会探讨Struts2的一些高级特性和深入使用的技巧。这篇学习笔记将主要围绕以下几个核心知识点展开: 1. **拦截器(Interceptors)**: Struts2的核心特性之一是拦截器,它允许...

    servlet和struts2笔记

    ### servlet和struts2笔记 #### 一、Servlet 基础 **Servlet** 是 Java Web 开发中的一种核心技术,它被设计用于处理客户端发送到服务器的 HTTP 请求,并且能够生成响应。Servlet 可以看作是服务器端的小程序,...

    struts2学习笔记二(第2讲.Struts2入门与配置续)

    本篇学习笔记将深入探讨Struts2的入门与配置,继续上一讲的内容。 首先,Struts2的基础入门涉及到以下几个核心概念: 1. **Action类**:在Struts2中,业务逻辑通常封装在Action类中。Action类是处理用户请求的主体...

    Struts2学习笔记2012

    ### Struts2学习笔记2012 #### 一、建立一个Struts2工程 **步骤详解:** 1. **创建Web项目:** - 在MyEclipse中选择“File” &gt; “New” &gt; “Dynamic Web Project”,创建一个新的Web项目。 2. **解压并配置...

    struts2学习笔记十(第10讲.Struts2的核心 拦截器)

    Struts2是一个强大的Java web开发框架,它极大地简化了基于MVC模式的应用程序构建过程。在Struts2中,拦截器扮演着至关重要的角色,它们是实现业务逻辑和控制流程分离开来的重要组件。本篇将深入探讨Struts2的核心...

    struts2学习笔记四(第4讲.Struts2的类型转换续)

    在"Struts2学习笔记四(第4讲.Struts2的类型转换续)"中,我们将会深入探讨Struts2中的类型转换机制,这是一个核心特性,用于处理Action类属性与HTTP请求参数之间的数据类型转换。 在HTTP请求中,数据通常是字符串...

    黑马程序员_struts2框架2016版视频_struts2_day01笔记

    其中,**前端控制器模式**是Struts2中最为关键的设计模式之一。这种模式的主要作用是集中处理所有的HTTP请求,并将请求转发给合适的组件处理。 ### 2. Struts2快速入门案例 #### 第一步:创建Web项目 在MyEclipse...

    Struts2学习笔记

    2. **环境搭建**:(一)环境搭建.txt可能包含了安装和配置Struts2框架的基础步骤,这通常包括添加Struts2库到项目依赖、配置web.xml文件、创建第一个Struts2应用等。 3. **UploadServlet.java**:在Struts2中,...

    struts2学习笔记十九(第19讲.Struts2深入探索 续)

    在第19讲“Struts2深入探索”中,我们将继续深入理解Struts2的核心特性和工作原理,这包括但不限于配置、拦截器、插件、以及源码分析。以下是关于Struts2的一些关键知识点: 1. **MVC模式**:Struts2遵循Model-View...

    struts2培训笔记

    ### Struts2培训笔记 #### 一、Struts2简介 **MVC框架**:Struts2是一个基于Java的企业级Web应用开发框架,遵循MVC(Model-View-Controller)设计模式。 - **M(Model)**:业务逻辑处理部分,通常指与数据库交互...

    struts2学习笔记十一(第11讲.Struts2的核心 拦截器续)

    在本篇“Struts2学习笔记十一”中,我们将深入探讨Struts2的核心拦截器及其应用。 **1. 拦截器的概念** 拦截器是AOP(面向切面编程)的一部分,在Struts2中,它们作为一系列可插入的处理链,可以在Action执行前后...

    struts2学习笔记八(第8讲.Struts2的校验框架)

    本讲主要探讨Struts2的校验框架,它提供了对用户输入数据进行验证的功能,确保数据的有效性和安全性。 在传统的MVC模式中,数据验证通常在控制器或模型层进行,但在Struts2中,校验逻辑被移到了专门的校验框架中,...

    struts2学习笔记九(第9讲.Struts2的校验框架 续)

    在第九讲中,我们将深入探讨Struts2的校验框架,这是一个非常重要的功能,它有助于确保输入数据的准确性和完整性,防止非法数据导致的系统异常。 在传统的Java web开发中,数据验证通常在服务器端进行,如Servlet或...

    SSH笔记_Struts2配置

    - Struts2有许多官方和第三方插件,如i18n、json、freemarker等,它们的配置在`struts-plugin.xml`中完成。 8. **Action与Service层整合** - Spring管理Service层对象,Struts2通过Spring插件注入Service,实现...

    三、Servlet_jsp_Struts2笔记

    Servlet、JSP、Struts2笔记 Servlet基础 Servlet是运行在服务器上的程序,使用Java语言编译,并且使用Servlet接口来实现动态界面。Servlet需要接受客户端发送的请求,并将处理结果以响应的形式响应给客户端。 ...

Global site tag (gtag.js) - Google Analytics