setattribute报错(set attribute)

http://www.itjxue.com  2023-01-27 05:15  来源:未知  点击次数: 

servlet一调用dao就报错?什么毛病?jsp正常调用

不管是你的jdbc用没用连接池,在初始化或者连接时报错,大体上都是两个原因,一,连接参数设置错误,二,依赖错误,

第二个只要你正确导入了,基本不太可能出错,那就只能是第一个了,你没用连接池,然后,问题来了,你封装的链接工具类DButil参数与数据库对不对?目前你的代码,报错原码什么都没有,只能看到这了。

session.setAttribute()报错

你是不是用的老版本的jdk new java.util.Date().getTime() 转换成object吧 后者换个新的jdk吧

我用的6.0的没问题啊 基本数据类型自动转换

存进去 读出来都正常

1241434242843

junit测试sevlet中设置request属性报错

public void setUp() {

servlet_add = new DeptAddAction();

servlet_del = new DeptDeleteAction();

mockRequest = createMock(HttpServletRequest.class);

mockResponse = createMock(HttpServletResponse.class);

}

中servlet_del 都没有声明吧?

为什么我用setAttribute出现错误

session是对页面的一组连续操作

就是说你用用户名和密码登陆完了才能获得session

HttpSession session = request.getSession();

用 request.setAttribute("uname",str1);

request.setAttribute("pwd",str2); 就行了

我想在action中直接用 request.setAttribute()函数,直接用会报错,之前应该做些什么?

你没取到request,不能像servlet一样直接取到request对象

4. struts2中获得request、response和session

(1)非IoC方式

方法一:使用org.apache.struts2.ActionContext类,通过它的静态方法getContext()获取当前Action的上下文对象。

ActionContext ctx = ActionContext.getContext();

ctx.put("liuwei", "andy"); //request.setAttribute("liuwei", "andy");

Map session = ctx.getSession(); //session

HttpServletRequest request = ctx.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);

HttpServletResponse response = ctx.get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);

细心的朋友可以发现这里的session是个Map对象, 在Struts2中底层的session都被封装成了Map类型. 我们可以直接操作这个Map对象进行对session的写入和读取操作, 而不用去直接操作HttpSession对象.

方法二:使用org.apache.struts2.ServletActionContext类

public class UserAction extends ActionSupport {

//其他代码片段

private HttpServletRequest req;

// private HttpServletRequest req = ServletActionContext.getRequest(); 这条语句放在这个位置是错误的,同样把这条语句放在构造方法中也是错误的。

public String login() {

req = ServletActionContext.getRequest(); //req的获得必须在具体的方法中实现

user = new User();

user.setUid(uid);

user.setPassword(password);

if (userDAO.isLogin(user)) {

req.getSession().setAttribute("user", user);

return SUCCESS;

}

return LOGIN;

}

public String queryAll() {

req = ServletActionContext.getRequest(); //req的获得必须在具体的方法中实现

uList = userDAO.queryAll();

req.getSession().setAttribute("uList", uList);

return SUCCESS;

}

//其他代码片段

}

(2)IoC方式(即使用Struts2 Aware拦截器)

要使用IoC方式,我们首先要告诉IoC容器(Container)想取得某个对象的意愿,通过实现相应的接口做到这点。

public class UserAction extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {

private HttpServletRequest request;

private HttpServletResponse response;

public void setServletRequest(HttpServletRequest request) {

this.request = request;

}

public void setServletResponse(HttpServletResponse response) {

this.response = response;

}

public String execute() {

HttpSession session = request.getSession();

return SUCCESS;

}

}

(责任编辑:IT教学网)

更多

推荐鼠标代码文章