`

在struts2中获得ServletContext 服务器容器对象

阅读更多

如何在struts2的Action中如何获得ServletContext 服务器容器对象

 

1.实现接口(import org.apache.struts2.util.ServletContextAware;) implements ServletContextAware

 

2.定义变量

/**
* 服务器容器
*/
private ServletContext context;

 

3.实现方法

public void setServletContext(ServletContext arg0) {
this.context = arg0;
}

 

4.具体代码应用(将登陆用户ID,放入服务器容器)

 

/**
* 判断用户账号密码是否正确,是否已经登入
*/
@SuppressWarnings("unchecked")
private boolean isgo() {
// 调用service将用户信息调出
TEmployeeSafe tem = empSafeService.queryById(employeeId);
if (tem == null) {
this.setMsg("用户名输入有误!");
return false;
}

// 新增验证,验证当前工号对应角色是否为开启状态
// t_employee_safe.roleNum = t_employee_role.roleNum 并且t_employee_role.state = 10
//TEmployeeRole role = service.queryByRoleNum(tem);

TEmployeeRole role = empRoleService.queryById(tem.getRoleNum());
if(role.getState() != null){
if(!role.getState().equals("10")){
this.setMsg("当前用户对应角色未开启!");
return false;
}
}else{
this.setMsg("当前用户无对应角色!");
return false;
}
TEmployeeInfo info = empService.queryEmploye(employeeId);

// 将密码转换为md5 形式
String pwd = KeyedDigestMD5.getKeyedDigest(employeePass, "").toUpperCase();

if (tem.getEmployeePass().equals(pwd)) {
// 取得服务器中的用户集合
HashMap<String, String> map = (HashMap<String, String>) context
.getAttribute("userList");
// 获取sessionId
String SessionId = ServletActionContext.getRequest().getSession()
.getId();
// 如果服务器中不存在此用户则将用户加入集合,存在则删除原来的,再重新加入新的。
if (map == null || map.size() == 0) {
map = new HashMap<String, String>();
// 创立标志
map.put(tem.getEmployeeId(), SessionId);
// 将标志放入服务器中
context.setAttribute("userList", map);
// 将标志放入session
ServletActionContext.getRequest().getSession().setAttribute(
"user", tem);
ServletActionContext.getRequest().getSession().setAttribute(
"info", info);
ServletActionContext.getRequest().getSession().setAttribute(
"role", role);
} else {
if (map.get(tem.getEmployeeId()) != null) {
// 存在用户则将其删除
map.remove(tem.getEmployeeId());
}
map.put(tem.getEmployeeId(), SessionId);
// 将标志重新放入服务器中
context.setAttribute("userList", map);
// 将标志放入session
ServletActionContext.getRequest().getSession().setAttribute(
"user", tem);
}
return true;
}
this.setMsg("密码输入有误!");
return false;
}

 

==================================================================================

 

5.导包时注意,必须导入import org.apache.struts2.util.ServletContextAware;

 

strurts2 application 报错

2009-11-25 14:13

package com.bonck.user.login;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.springframework.web.context.ServletContextAware;

import org.springframework.web.struts.ActionSupport;

import com.bonck.app.UserApp;
import com.bonck.dao.Useinfo;

 


public class LoginAction extends ActionSupport implements ServletContextAware,
ServletRequestAware {

/**
*
*/
private static final long serialVersionUID = 1L;

private String username;

private String password;

private HttpServletRequest request;

private ServletContext application;

public String execute() throws Exception {

UserApp app=new UserApp();
Useinfo user =app.getUser(username, password);
if(user.getUiId()!=null){
request.setAttribute("username", username);
application.setAttribute("pwd", password);

return "welcome";
}
else
return "error";

}

public void setServletContext(ServletContext arg0) {
application = arg0;

}

public void setServletRequest(HttpServletRequest arg0) {
request = arg0;

}

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;
}

public HttpServletRequest getRequest() {
return request;
}

public void setRequest(HttpServletRequest request) {
this.request = request;
}

public ServletContext getApplication() {
return application;
}

public void setApplication(ServletContext application) {
this.application = application;
}

}

一直报错,最后终于发现spring倒的鬼,解决方案:将该

import org.springframework.web.context.ServletContextAware;

换成

import org.apache.struts2.util.ServletContextAware;即可

看来还的认真!

 

 

分享到:
评论

相关推荐

    spring在web.xml中和在struts中的不同配置.[收集].pdf

    Struts2插件负责在Action执行时从Spring容器中查找并注入Bean。 总结一下,Spring在`web.xml`中的配置主要关注ApplicationContext的初始化和配置文件的位置,而Struts中的配置则是在Struts2配置文件中声明Action和...

    struts,ajax,json

    在可测试性方面,Struts 1的Action需要在Web容器中测试,而Struts 2的Action可以脱离Web容器单独测试。此外,Struts 1使用ActionForm封装表单项,而Struts 2直接使用业务逻辑Action封装表单项,简化了开发。 最后,...

    JavaEE技术-试验四.zip_JavaEE_API_struts2 Action

    在Struts2中,尽管大部分的HTTP请求处理工作由Struts2框架接管,但我们仍然可以通过HttpServletRequest、HttpSession和ServletContext这三个Servlet API的核心组件来获取和操作请求信息。 HttpServletRequest对象...

    Struts1.2源码解读

    在web应用的部署描述文件web.xml中配置ActionServlet后,当服务器启动或有第一个请求到达时,就会加载并初始化ActionServlet类。初始化过程中,ActionServlet的init()方法会被调用,这是初始化Struts应用的关键。 ...

    Struts平台建设PPT(2)

    Struts框架的基本结构包括:浏览器发送请求到Web服务器,Web服务器上的Servlet容器处理请求,调用模型组件(如JavaBean和EJB)执行业务逻辑,然后通过控制器返回响应,最终由视图(JSP)渲染结果显示给用户。...

    Struts面试题

    #### 五、Struts2中的默认包struts-default的作用 1. **定义内置组件**:`struts-default`包预定义了一系列内置的拦截器和结果类型,这是Struts2许多核心功能的基础。 2. **自动加载**:`struts-default.xml`文件是...

    struts

    2. Servlet:Java Servlet组件,运行在Servlet容器中,处理HTTP请求,创建JavaBean对象,并将响应返回给用户。Servlet是MVC架构中的控制器,负责转发请求和控制流程。 3. JSP标签库和XML:JSP标签库提供了更简洁的...

    Struts1_Java Web应用简介.ppt

    在Struts1框架中,Servlet通常扮演控制器的角色,被Servlet容器如Tomcat动态加载,根据请求进行响应。例如,Struts1的ActionServlet作为核心控制器,接收HTTP请求,根据配置信息转发到相应的Action进行处理。 ...

    java面试题

    - HttpSession (session):用于在客户端和服务器之间保持状态的会话对象 - ServletContext (application):整个应用共享的数据存储 - ServletConfig (config):Servlet的配置信息 - Object (page):当前页面的...

    华为招聘Java面试题:概念题:1. 描述Struts体系结构?对应各个部分的开发工作主要包括哪些?2. JSP有哪些内置对象和动作?它们的作用分别是什么?……

    根据提供的华为Java面试题,我们将深入探讨两个主要概念:Struts框架体系结构及其开发工作,以及JSP中的内置对象和动作。 ### 1. Struts框架体系结构 #### 概述 Struts是一个用于构建企业级Java Web应用程序的开源...

    STRUTS:filter过滤器

    在Java Web开发中,过滤器(Filter)是一种重要的组件,用于拦截客户端发送至服务器的请求或服务器返回至客户端的响应。Struts框架作为Java Web开发中的一种流行框架,利用了过滤器机制来增强其功能性和灵活性。本文...

    超级有影响力霸气的Java面试题大全文档

    当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。 20、abstract class和interface有什么区别? ...

    特殊情况(ActionForm,Servlet, Filter, Listener)下Spring如何注入对象

    2. **Filter**: 同样,可以在Filter的init()方法中获取ApplicationContext,或者通过ServletContextAware接口,将Spring上下文注册到ServletContext,然后在doFilter()方法中使用。 3. **Listener**: 在监听器的...

    ssh框架搭建

    在`web.xml`中添加`ContextLoaderListener`,用于在服务器启动时初始化Spring的ApplicationContext,并将BeanFactory放入ServletContext中。 Spring的`ContextLoaderListener`初始化代码示例: ```java public ...

    《Java Web程序设计任务教程》-章节习题.docx 第1章网页开发基础 2.Java Web概述等

    在Servlet开发中,`ServletContext`对象用于在多个Servlet间共享数据。当Servlet容器启动Web应用时,会创建一个唯一的`ServletContext`实例,它与Web应用的生命周期相同。 第4章讨论了请求和响应以及会话技术。HTTP...

    中国移动项目servlet

    2. **Servlet API**:熟悉Servlet API中的关键类和方法,如`HttpServletRequest`、`HttpServletResponse`、`ServletConfig`以及`ServletContext`等,这些类提供了处理请求、生成响应和获取上下文信息的方法。...

    java获取路径的各种方法

    3. **ActionForm.getMyFile()**:在Struts框架中,ActionForm对象的某个属性(如myFile)可以用来存储用户上传的文件路径。 4. **System.getProperty("user.dir")**:在Java中,可以使用System类的getProperty方法...

Global site tag (gtag.js) - Google Analytics