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

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中Action访问Servlet API的几种方法

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

    struts_2.5_API (CHM格式)

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

    struts2JAR包

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

    struts2必须jar包

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

    struts2-205

    struts2-2.5.5 最小开发包 可以用来练习!...Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

    review.struts.zip

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

    struts-2.3.16.1.zip

    Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。struts-2.3.16.1.zip就是struts2.3的一个版本...

    struts-2.3.16.3-all.zip

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

    struts-2.3.15

    Struts2是一个基于MVC设计模式的Web应用框架,...Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品

    spring、Struts2、hibernate常见面试题

    Spring、Struts2、Hibernate 面试题中的知识点,涵盖了 MVC 模式、Struts1.2 和 Struts2.0 的区别、单例模式、Servlet 依赖、可测试性、项目中使用 SSH 的原因、Struts 和 Spring 的继承关系、实现国际化等方面的...

    struts,ajax,json

    struts2 struts2struts2 struts2 的 ActionAction ActionAction 如何实现和 如何实现和 如何实现和 servletAPI servletAPIservletAPIservletAPIservletAPI servletAPIservletAPIservletAPI的交互

    Strut2核心JAR包.zip

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

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    8.6.1 实现与ServletAPI的交互 86.2 域模型DomainModel 86.3 驱动模型ModelDriven 8.7 实战检验 8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare ...

    宿舍管理系统

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

    JAVA-SSH面试题

    视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。 模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高...

    Java笔试题+答案.doc

    JavaBean,EJB 组件实现),“View” 是应用的表示面(由 JSP 页面产生),“Controller” 是提供给用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑、处理过程和显示逻辑分成不同的组件实现。...

    J2EE面试题目

    Model 代表的是应用的业务逻辑(通过 JavaBean,EJB 组件实现),View 是应用的表示面(由 JSP 页面产生),Controller 是提供应用的处理过程控制(一般是一个 Servlet)。通过这种设计模型,把应用逻辑、处理过程和...

    信息办公电信计费系统完整代码-netctossconformity.rar

    通过分析这些代码,可以加深对Java Web技术栈的理解,包括但不限于Servlet API、JDBC(Java Database Connectivity)、HTML/CSS/JavaScript,以及可能涉及的框架如Spring或Struts。此外,这个资料包也可能含有一些...

    Java语言基础下载

    Struts如何实现Model 2, MVC 639 Struts 控制流 639 Struts framework的工作原理和组件 642 Struts ActionServlet控制器对象 642 Struts Action Classes 642 搞定Action对象 643 处理异常 643 Action的分类 643 ...

    Java 学习笔记极其详细版(包括一些个人色彩不仅仅是纯笔记)

    面向对象编程:类与对象、继承、多态、封装。 集合框架:List、Set、Map的使用及其实现原理。 Java I/O:文件操作、流处理。 多线程编程:线程的创建、同步机制、并发工具。 网络编程:Socket编程、URL和...

Global site tag (gtag.js) - Google Analytics