问题描述
importjavax.servlet.http.HttpServlet;importjava.io.IOException;importjava.util.ArrayList;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpSession;importjavabean.user;importDB.DB;publicclassMainServletextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding("gb2312");response.setContentType("gb2312");Stringusername=request.getParameter("LoginBoard_LoginName");Stringpwd=request.getParameter("LoginBoard_LoginPassword");DBdb=newDB();HttpSessionsession=request.getSession();useruser1=(user)session.getAttribute("user");if(user1==null){user1=db.selectUser(username,pwd);}session.setAttribute("user1",user1);if(user1!=null){ArrayLista1=db.findLyInfo();session.setAttribute("a1",a1);response.sendRedirect("MessageBoard_Main.jsp");}}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);}}
解决方案
解决方案二:
这个是补充,我怕是数据库处理的时候出了问题,现在把数据库连接的代码页贴出来packageDB;importjava.sql.*;importjavabean.message;importjavabean.user;importjava.util.ArrayList;publicclassDB{Connectionct;PreparedStatementpstmt;publicDB(){try{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");ct=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=MessageBoard","sa","123");}catch(Exceptione){e.printStackTrace();}}publicuserselectUser(Stringusername,Stringpassword){try{pstmt=ct.prepareStatement("select*from[user]whereusername=?andpassword=?");pstmt.setString(1,username);pstmt.setString(2,password);ResultSetrs=pstmt.executeQuery();useruser1=newuser();while(rs.next()){user1.setId(rs.getInt(1));user1.setUsername(rs.getString(2));user1.setPassword(rs.getString(3));returnuser1;}returnuser1;}catch(Exceptione){e.printStackTrace();returnnull;}}publicArrayListfindLyInfo(){try{ArrayLista1=newArrayList();pstmt=ct.prepareStatement("select*from[MessageBoard]");ResultSetrs=pstmt.executeQuery();while(rs.next()){messagemb=newmessage();mb.setId(rs.getInt(1));mb.setUserid(rs.getString(2));mb.setDate(rs.getDate(3));mb.setTitle(rs.getString(4));mb.setContent(rs.getString(5));a1.add(mb);}returna1;}catch(Exceptione){e.printStackTrace();returnnull;}}publicStringgetusername(intid){Stringusername=null;try{pstmt=ct.prepareStatement("selectusernamefrom[user]whereid=?");pstmt.setInt(1,id);ResultSetrs=pstmt.executeQuery();while(rs.next()){returnusername;}}catch(Exceptione){e.printStackTrace();returnnull;}returnnull;}}
解决方案三:
楼主,你提交的是form表单吧,设置method="post"了吧,其实你直接把doGet方法里的程序写到doPost里面,你用的是post提交,doGet方法不需要,一个doPost方法就行了
解决方案四:
建议在post方法里写上doGet(request,response),以后就不用管什么方式提交表单了,在一个方法里面处理就行了
解决方案五:
建议把xml配置文件和那个空白页面的地址发出来。
解决方案六:
引用4楼的回复:
建议把xml配置文件和那个空白页面的地址发出来。
XML配置:?xmlversion="1.0"encoding="UTF-8"?><web-appversion="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><servlet><servlet-name>MainServlet</servlet-name><servlet-class>myServlet.MainServlet</servlet-class></servlet><servlet-mapping><servlet-name>MainServlet</servlet-name><url-pattern>/MainServlet</url-pattern></servlet-mapping><welcome-file-list><welcome-file>MessageBoard_Login.jsp</welcome-file></welcome-file-list></web-app>空白页面地址:http://20120214-1351:8080/JavaEE_MessageBoard/MainServlet(下面的页面是空白的)这个贴白不能贴图么?本来想截图,方便点。
解决方案七:
还是没人告诉我,空白页面怎么办啊?什么post方法,get方法那不是重点吧??
解决方案八:
可能是你的Servlet配置文件出现问题了吧?
解决方案九:
引用7楼的回复:
可能是你的Servlet配置文件出现问题了吧?
我已经贴出了配置文件,我不知道问题在哪?
解决方案十:
你看看浏览器源代码里面有内容吗?
解决方案十一:
引用9楼的回复:
你看看浏览器源代码里面有内容吗?
没有,也是空白的
解决方案十二:
按你的逻辑应该是没进到这里if(user1!=null){ArrayLista1=db.findLyInfo();session.setAttribute("a1",a1);response.sendRedirect("MessageBoard_Main.jsp");}也就是user1==null了自己debug看看
解决方案十三:
dogetdopost没关系不管什么提交方法你已经在dopost中加入doGet(request,response)request.setCharacterEncoding("gb2312");//这个最好改成utf-8要和jsp编码一样response.setContentType("gb2312");Stringusername=request.getParameter("LoginBoard_LoginName");//首先你一打开页面请问这个值你从什么地方赋值的。Stringpwd=request.getParameter("LoginBoard_LoginPassword");DBdb=newDB();HttpSessionsession=request.getSession();//创建sessionuseruser1=(user)session.getAttribute("user");//请问这个值你从什么地方赋值的。首先你一打开页面if(user1==null){user1=db.selectUser(username,pwd);//查询没有usernamepwd你查什么下面就不说了}session.setAttribute("user1",user1);if(user1!=null){ArrayLista1=db.findLyInfo();session.setAttribute("a1",a1);response.sendRedirect("MessageBoard_Main.jsp");}
你在jsp怎么遍历的你不会没遍历吧
解决方案十四:
空白一般都是没查到数据亲
解决方案十五:
publicuserselectUser(Stringusername,Stringpassword){try{pstmt=ct.prepareStatement("select*from[user]whereusername=?andpassword=?");pstmt.setString(1,username);pstmt.setString(2,password);ResultSetrs=pstmt.executeQuery();useruser1=newuser();while(rs.next()){user1.setId(rs.getInt(1));user1.setUsername(rs.getString(2));user1.setPassword(rs.getString(3));returnuser1;}returnuser1;}catch(Exceptione){e.printStackTrace();returnnull;}}
pstmt=ct.prepareStatement("select*from[user]whereusername=?andpassword=?");空格select*from如果运行好这里应该报错的没保持就是应该没运行到这里现在搞.net你应该说的详细点怎么赋值实现什么功能这样我们才能帮忙
其他方案:
引用2楼的回复:
楼主,你提交的是form表单吧,设置method="post"了吧,其实你直接把doGet方法里的程序写到doPost里面,你用的是post提交,doGet方法不需要,一个doPost方法就行了
支持二楼直接重写service方法就ok
其他方案:
引用15楼zhenlai2012的回复:
[Quote=引用2楼的回复:]楼主,你提交的是form表单吧,设置method="post"了吧,其实你直接把doGet方法里的程序写到doPost里面,你用的是post提交,doGet方法不需要,一个doPost方法就行了
支持二楼直接重写service方法就ok
我表示和method属性无关,我也遇到了这样的问题,现在把页面代码贴出来<tableclass="table"><trclass="table_header"><td>ID</td><td>Username</td><td>Gendar</td><td>Age</td><td></td></tr><%UserDaoud=newUserDaoImpl();ArrayList<User>list=ud.selectAll();if(list.size()>0){for(Useru:list){%><trclass="row1"><td><%=u.getId()%></td><td><%=u.getUsername()%></td><td><%inti=u.getGender();if(i>0){%><%='男'%><%}else{%><%='女'%><%}%></td><td><%=u.getAge()%></td><td><ahref="delete.do?id=<%=u.getId()%>"onclick="returnconfirm('你确定删除编号为<%=u.getId()%>的用户吗?')">删除</a></td></tr><%}}%></table>
诚求各位大神指教一二。
其他方案:
HttpSessionsession=request.getSession();useruser1=(user)session.getAttribute("user");if(user1==null){user1=db.selectUser(username,pwd);}假设你是第一次访问你的servlet那么session是没有值的,你可以在if里面加上response.getwriter.print("首次访问本站");你看看是不是出现数据了,这次访问后,session你就在下面存值了,你就获取的到session中的数据显示了