setattribute报错(set attribute)
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;
}
}