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

struts2笔记之第七讲

 
阅读更多
struts2笔记之第七讲


导语:Struts2的Action访问Servlet API,有三种方式:上一节课中已经讲了第一方式。可以通过ActionContext访问Servlet API。
三种方式:
1.可以通过ActionContext访问Servlet API 此种方式没有侵入性(这个其实是间接把Session放到中间的map里)

2.可以通过实习装配接口,完成对Servlet API的访问
*ServletRequestAware取得HttpServletRequest对象
*ServletResponseAware取得HttpServletResponse对象
*ServletContextAware取得ServletContext对象(工具类)

3.可以通过ServletActionContext提供的静态方法取得Servlet API
*getPageContext();
*getRequest();
*getResponse();
*getServletContext();

下面折重讲第二中方式和第三种方式,第一种请参阅第一章节。



2.可以通过实习装配接口,完成对Servlet API的访问

例子:
LoginAction.java
package com.struts2;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

public class LoginAction implements Action,ServletRequestAware,ServletResponseAware {
    private String username;
    private String password;
 [color=red]   private HttpServletRequest request;
    private HttpServletResponse response;[/color]
	/**
	 * struts2 默认调用这个方法,返回字符串
	 * @return
	 * @throws Exception
	 */
	public String execute() throws Exception{
		
		
	   if("admin".equals(username) && "admin".equals(password)){
		  request.getSession().setAttribute("user", 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;
	}

	@Override
	public void setServletResponse(HttpServletResponse response) {
		this.response=response;
		
	}

	@Override
	public void setServletRequest(HttpServletRequest request) {
		this.request=request;
		
	}
}


MustLoginAction.java
package com.struts2;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

public class MustLoginAction implements Action,ServletRequestAware {
	  private HttpServletRequest request;
	@Override
	public String execute() throws Exception {
		if(request.getSession().getAttribute("user")==null){
			//重定向到登陆页面
			return LOGIN;
		}else{
			return SUCCESS;
		}
	}
	@Override
	public void setServletRequest(HttpServletRequest request) {
		this.request=request;
		
	}
     
	
}

index.jsp文件核心代码
 <a href="login.jsp">登陆</a> <br>
   <a href="mustLogin.action">访问受保护的页面</a> <br>

省略的jsp页面有:login.jsp、login_error.jsp、login_success.jsp、must_login.jsp

3.可以通过ServletActionContext提供的静态方法取得Servlet API
LoginAction.java
package com.struts2;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

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)){
		 ServletActionContext.getRequest().getSession().setAttribute("user", 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 javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

public class MustLoginAction implements Action {
	  private HttpServletRequest request;
	@Override
	public String execute() throws Exception {
		if(ServletActionContext.getRequest().getSession().getAttribute("user")==null){
			//重定向到登陆页面
			return LOGIN;
		}else{
			return SUCCESS;
		}
	}
	
分享到:
评论

相关推荐

    赵栋struts2 笔记

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

    struts2笔记之校验表单信息

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

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

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

    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的核心 拦截器)

    7. `ActionInvocationInterceptor`: 这是Struts2框架内部使用的拦截器,用于实际调用Action的execute方法。 8. `ResultInterceptor`: 在Action执行完成后,这个拦截器会处理返回的结果,如渲染视图、跳转到其他页面...

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

    #### 第七步:访问Action 通过浏览器访问指定的URL,查看Struts2应用程序的输出结果。 ### 3. 分析Struts2运行原理 Struts2的核心是**StrutsPrepareAndExecuteFilter**,这是一个过滤器,它负责处理所有的HTTP...

    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学习笔记九(第9讲.Struts2的校验框架 续)

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

    三、Servlet_jsp_Struts2笔记

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

    SSH笔记_Struts2配置

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

    Struts2_Action学习笔记、通配符{1},{2}

    ### Struts2_Action 学习笔记与通配符配置详解 #### 一、Struts2简介及简单配置 Struts2是一个基于Java EE平台的开源Web应用框架,它继承了Struts1的优点,并在此基础上进行了大量的改进。Struts2的核心功能之一是...

    struts2学习笔记十七(第17讲.Struts2的国际化续)

    第17讲主要探讨了Struts2的国际化续篇,即如何进一步实现和优化国际化功能。这一讲的内容可能会涵盖以下几个方面: 1. **资源文件创建**: 国际化的核心是资源文件,通常以`.properties`格式存储。例如,`messages...

    servlet AND Struts2笔记

    #### 七、Struts2简介 - **Struts2框架**:基于MVC设计模式的Java Web应用框架,用于简化Web应用的开发和维护过程。 - **特点**: - 灵活的配置机制:支持多种配置方式,如XML配置、注解配置等。 - 强大的拦截器...

    【张冰Struts2学习笔记】0102_第一个Struts2实例

    【张冰Struts2学习笔记】0102_第一个Struts2实例 在Java Web开发领域,Struts2框架是十分重要的MVC(模型-视图-控制器)架构之一,它极大地简化了Web应用程序的开发流程。这篇学习笔记将带你入门Struts2,通过创建...

    达内struts2全套学习资料(包括练习和笔记有详尽的代码)

    10. **插件与第三方库集成**:Struts2有许多内置插件,如.tiles、struts2-dojo-plugin等,同时也可以与Hibernate、Spring等其他框架无缝集成,提升开发效率。 通过达内的这套学习资料,初学者将逐步掌握以上知识点...

    Struts2笔记

    完成环境配置后,你可以开始创建第一个Struts2应用: 1. 设计视图页面,例如`hello.jsp`和`success.jsp`。 2. 编写动作类,这是一个普通的Java类,通常遵循JavaBean规范,用于处理业务逻辑。 3. 在`struts.xml`中...

Global site tag (gtag.js) - Google Analytics