`
默翁1
  • 浏览: 26901 次
社区版块
存档分类
最新评论

Struts2实现与Servlet API的交互

 
阅读更多

struts2中提供了Map类型的request,session,与application,可以从ActionContext对象中获得.

(1)实例ActionContext,通常通过ActionContext对象提供的getContext()方法获取

public static ActionContext getContext(),该方法是静态的,可以直接调用

ActionContext=ActionContext.getContext()

(2)获取Map类型的request

Map request=ActionContext.getContext().get("request");

(3)获取Map类型的session

Map request=ActionContext.getContext().getSession();

(4)获取Map类型的application

Map request=ActionContext.getContext().getApplication();

public class LoginAction {
	
	private String username;
	private String password;
	
	public String login(){
		return "login";
	}
	
	public String logined(){
		
		if(StringUtil.isNotEmpty(username)&&StringUtil.isNotEmpty(password)){
			ActionContext.getContext().getSession().put("username",username);
			return "loginSuccess";
		}else{
			return "error";
		}
	}
	
	//生成setter和getter
	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;
	}

	
}

 虽然在struts2中使用ActionContext来访问 Servlet API,但这种方法不能直接获得ServletAPI实例,为了再action中直接访问 Servlet API可以通过以下方法直接访问

(1)ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例

(2)ServletRequestAware:实现该接口的Action可以直接访问Web应用的HttpServletRequest实例

(3)ServletResponseAware:实现该接口的Action可以直接访问Web应用的HttpServletResponse实例

public class LoginAction implements ServletResponseAware{
	
	private String username;
	private String password;
	private HttpServletResponse response;
	public String login(){
		return "login";
	}
	
	public String logined(){
		//记录一个网站访问次数
		ActionContext context=ActionContext.getContext();
		Integer count=(Integer)context.getApplication().get("count");
		if(count==null){
			count=1;
		}else{
			count+=1;
		}
		context.getApplication().put("count", count);
		if(StringUtil.isNotEmpty(username)&&StringUtil.isNotEmpty(password)){
			Cookie cookie=new Cookie("username", username);
			cookie.setMaxAge(60*60);
			response.addCookie(cookie);
			context.getSession().put("username",username);
			return "loginSuccess";
		}else{
			return "error";
		}
	}
	
	//生成setter和getter
	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;
	}

}

 除上述两种方法外,还可以通过ServletActionContext访问Servlet API

public class LoginAction{
	
	private String username;
	private String password;
	private HttpServletResponse response;
	public String login(){
		return "login";
	}
	
	public String logined(){
		//记录一个网站访问次数
		ActionContext context=ActionContext.getContext();
		Integer count=(Integer)context.getApplication().get("count");
		if(count==null){
			count=1;
		}else{
			count+=1;
		}
		context.getApplication().put("count", count);
		if(StringUtil.isNotEmpty(username)&&StringUtil.isNotEmpty(password)){
			Cookie cookie=new Cookie("username", username);
			cookie.setMaxAge(60*60);
			ServletActionContext.getResponse().addCookie(cookie);
			context.getSession().put("username",username);
			return "loginSuccess";
		}else{
			return "error";
		}
	}
	
	//生成setter和getter
	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;
	}

}

 

0
0
分享到:
评论

相关推荐

    Struts2访问ServletAPI

    在Struts2框架中,我们有时需要直接与Servlet API交互,例如处理HTTP请求、响应,或者使用Session、Cookie等。本文将深入探讨如何在Struts2中访问Servlet API。 首先,理解Struts2的执行流程至关重要。当一个请求...

    Struts2中直接和间接访问ServletAPI以及动态方法调用之感叹号

    然而,在Struts2中,我们通常不直接与Servlet API交互,而是通过Action类和Struts拦截器来处理请求。直接访问Servlet API可能涉及使用`HttpServletRequest`、`HttpServletResponse`和`ServletConfig`等对象,这可能...

    Struts2 part 3:在Action中使用ServletAPI

    在"Struts2 part 3:在Action中使用ServletAPI"这一主题中,我们将深入探讨如何在Struts2的动作类(Action)中集成和利用Servlet API来增强应用的功能。 Servlet API是Java Servlet规范的一部分,它提供了一系列...

    strut2 servletapi

    6. **Struts2与Servlet API的结合**:尽管Struts2提供了丰富的功能,但有时候直接使用Servlet API可能是必要的,例如,当需要进行低级的HTTP操作时。在这种情况下,开发者可以在Action类或自定义拦截器中集成Servlet...

    servlet api servlet api

    MVC(Model-View-Controller)框架如Spring MVC、Struts等,虽然提供了更高级别的抽象,但底层仍然基于Servlet API处理请求和响应。 综上所述,Servlet API是构建Java Web应用的基础,提供了处理HTTP请求的核心...

    Struts2中Servlet的配置

    综上所述,Struts2提供了多种方式来与Servlet API交互,同时通过适当的过滤器配置,可以确保在Struts2框架下,直接编写的Servlet也能正常工作。理解和掌握这些配置技巧对于开发和维护Struts2应用至关重要。

    java上传与下载——struts2和servlet案例

    本案例聚焦于使用Struts2和Servlet两种不同的技术来实现这一功能。这两个技术都是Java Servlet的重要扩展,用于增强Web应用程序的功能和用户体验。 首先,让我们深入理解Struts2框架。Struts2是一个基于MVC(Model-...

    详解Struts2中Action访问Servlet API的几种方法

    Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,能更轻松的测试该Action。但如何访问?  Web应用中通常需要访问的Servlet API就是...

    Struts2之Servlet文件上传详解案例struts010

    本案例“Struts2之Servlet文件上传详解”将聚焦于如何使用Struts2框架配合Servlet实现文件上传功能。在Web应用中,文件上传是一个常见的需求,例如用户可能需要上传头像、附件等。 首先,我们来理解文件上传的基本...

    关于struts和servlet同时用

    Struts和Servlet是Java Web开发中的两个重要组件,它们在构建动态、交互式的Web应用程序时起着关键作用。Struts是一种基于MVC(Model-View-Controller)设计模式的开源框架,而Servlet则是Java标准库中用于处理HTTP...

    Struts2.3.4 API帮助文档chm格式

    这些插件使得Struts2能更好地与各种技术集成,如JSON数据交互、模板引擎使用等。 4. **标签库(Tags)**:Struts2提供了一套丰富的JSP标签,简化了视图层的开发。例如s:form、s:textfield、s:submit等,它们对应于...

    Struts1 Struts2 JQuery api

    与Struts1和Struts2结合使用时,JQuery可以用来增强前端的交互性,与服务器端进行异步通信。 **Ajax** Ajax(Asynchronous JavaScript and XML)并非一种单一的技术,而是一种使用现有Web技术(JavaScript、XML、...

    Struts1-1API.rar_Struts1_API_struts 1 api_struts1_struts1 api_st

    通过深入理解Struts1的API,开发者可以更有效地实现业务逻辑,处理用户请求,构建出高效、可维护的Web应用程序。对于初学者,了解每个组件的作用以及它们之间的交互方式至关重要,这有助于提高开发效率和代码质量。...

    struts_2.5_API (CHM格式)

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...

    Struts2和Struts1的区别,详细点,主要说说Struts2

    - **Struts2**的Action类并不直接依赖Servlet API,而是通过中间层(如拦截器)间接与Servlet API交互,这样的设计使得**Struts2**的Action更加独立,也更容易进行单元测试。 #### 请求处理流程 - **Struts1**执行...

    servlet-api.jar

    综上所述,servlet-api.jar对于理解Java Web开发至关重要,它构成了Web应用与服务器之间通信的基础,同时也是许多Web框架如Spring MVC、Struts、JSF等工作的核心。熟悉并掌握Servlet API,能帮助开发者更高效地构建...

    struts2所需的包和Struts2_json所需包

    而Struts2与JSON的集成则进一步增强了其功能,使得数据交换更为简洁,特别是在AJAX和移动应用中。 在标题和描述中提到的"struts2所需的包和Struts2_json所需包",主要是指为了实现Struts2框架与JSON数据交互所需要...

    struts2JAR包

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,...

Global site tag (gtag.js) - Google Analytics