现在有个
Servlet:admin 控制的servlet
jsp:prolist.jsp 产品列表展示页面在admin中,验证登录之后
list = db.getAllProduct();
session.setAttribute("productlist",list);
session.setAttribute("adminName",adminName);
this.forward(request, response, "productlist.jsp");
此时,能正常的显示产品的内容
但是,如果从其他页面,比如说addproduct.jsp中设置跳转"productlist.jsp"中,这时候内容的列表皆为空,请问是为什么呢?如何解决?如果是说session.setAttribute("productlist",list); 已经失效,那么对于session.setAttribute("adminName",adminName);也为空,这时会让我跳到login.jsp的。而且应该不存在session过期的问题。prolist.jsp 主要代码
if(session.getAttribute("adminName")==null){
session.setAttribute("nouser","nouser");
%>
<jsp:forward page="login.jsp"/>
<%
}else if((session.getAttribute("productlist"))!=null){
请问各位大大怎么解决,谢了
Servlet:admin 控制的servlet
jsp:prolist.jsp 产品列表展示页面在admin中,验证登录之后
list = db.getAllProduct();
session.setAttribute("productlist",list);
session.setAttribute("adminName",adminName);
this.forward(request, response, "productlist.jsp");
此时,能正常的显示产品的内容
但是,如果从其他页面,比如说addproduct.jsp中设置跳转"productlist.jsp"中,这时候内容的列表皆为空,请问是为什么呢?如何解决?如果是说session.setAttribute("productlist",list); 已经失效,那么对于session.setAttribute("adminName",adminName);也为空,这时会让我跳到login.jsp的。而且应该不存在session过期的问题。prolist.jsp 主要代码
if(session.getAttribute("adminName")==null){
session.setAttribute("nouser","nouser");
%>
<jsp:forward page="login.jsp"/>
<%
}else if((session.getAttribute("productlist"))!=null){
请问各位大大怎么解决,谢了
你要保证 在执行完 session.setAttribute("productlist",list);
session.setAttribute("adminName",adminName);
this.forward(request, response, "productlist.jsp");
后页面从没有关过
找不到问题出在哪里,浪费好多时间了。希望能得到大家的帮忙
你要是从登陆页面跳转过来有,上面没有,说明,你从login.jsp页面跳转到productlist.jsp页面中触发了db.getAllProduct() 。
你从其他页面来可能没有触发该该方法。还有以种可能就是的数据库连接是专门写一个类,在里面初始化数据库连接。
而你在db.getAllProduct()方法种没有实例化该类及连接
lz的意思就是从另一个页面 跳 过去之后
session中并没有值
就这个问题 三楼 说的就很正确了 ,因为你跳转后的页面需要session中的attribute
所以你要保证在跳转到该页面之前就set 了这些 attribute
根据楼主的说明,似乎不是session生命周期的问题楼主追随数据流检查下你数据的传送吧
我也做了很多测试,比如在每个页面比如说处理addproduct.jsp的servlet中还有deleteproduct.jsp的
serlvet中都加入了getAllproduct()并setAttribute了list。但是每当我add或者del一个产品跳转到
productlist的时候都不能正常显示产品内容。
比如:事务提交后的关闭,数据库连接的关闭,批处理等
<form action="/Youngdental/adminservlet" name="myform" method="post">
商品名称:<input type="text" name="productName"><br>
商品价格:<input type="text" name="productPrice"><br>
商品类型:
<select name="productType">
<% DataBean db = new DataBean();
ArrayList list = new ArrayList();
list = db.getProductTypeList();
if(list.size() > 0){
for(int i=0;i<list.size()-1;i++){
String str = (String)list.get(i);
%>
<option value="<%=str %>"><%= str %></option>
<% } %>
</select>
<% }else{ %>
没有数据
<% } %>
<br>
<input type="hidden" name="productImage" value=<%= productImage %> />
<br>
是否推荐:<input type="radio" name="productIsbest" value="yes"> 是 ||
<input type="radio" name="productIsbest" value="no"> 否<br>
商品介绍:<br><textarea cols="100" rows="30" name="productIntro"></textarea><br>
<input type="hidden" value="addproduct" name="action">
<input type="submit" value="添加">
</form>
<%
if(session.getAttribute("adminName")==null){
session.setAttribute("nouser","nouser");
%>
<jsp:forward page="login.jsp"/>
<%
}if(session.getAttribute("addproduct")!=null){
String insert=(String)session.getAttribute("addproduct");
if(insert.equals("ok")){
out.println("成功添加商品");
}else{
out.println("添加商品失败");
}
session.setAttribute("addproduct",null);
}
%>
<a href="/Youngdental/adminservlet?action=showlist">返回商品列表</a>
</body>
</html>
处理的servlet
if(action.equals("addproduct")){
pro = new ProductBean();
pro.setProductName(request.getParameter("productName"));
pro.setProductIntro(request.getParameter("productIntro"));
pro.setProductPrice(Float.parseFloat(request.getParameter("productPrice")));
pro.setProductImage(request.getParameter("productImage"));
pro.setProductNm(request.getParameter("productType"));
pro.setProductType(request.getParameter("productType"));
pro.setProductIsBest(request.getParameter("productIsbest"));
boolean result = db.addProduct(pro);
if(result){
session.setAttribute("addproduct","ok");
session.removeAttribute("productlist");
list = db.getAllProduct();
session.setAttribute("productlist",list);
}else{
session.setAttribute("addproduct","nook");
}
this.forward(request,response,"yyadmin/productlist.jsp");