问题描述
这是原封不动导入到Myeclipse6.5里的代码,但是出错了,很奇怪,故咨询下各位,谢谢。<!--用page指令定义语言为java页面编码为utf-8--><%@pagelanguage="java"pageEncoding="utf-8"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>聊天用户登录</title><!--<linkrel="stylesheet"type="text/css"href="styles.css">--><scriptlanguage="javascript">//javascriptcheck函数,用于检查表单中输入的用户昵称和登录密码是否为空functioncheck(){if(document.form1.nickName.value==''){alert("用户昵称不能为空!");document.form1.nickName.focus();returnfalse;}elseif(document.form1.userPassword.value==''){alert("登录密码不能为空");document.form1.userPassword.focus();returnfalse;}elsereturntrue;}</script></head><body><TABLEalign="center"cellpadding="0"cellspacing="0"border="0"width="500"><tr><tdheight="100"colspan="2"style="font-size:18px;font-weight:bold"align="center">聊天用户登录</td></tr><!--定义一个form表单,表单提交的后台处理页面为chklogin.jsp--><!--以下form这一行有警告--><formaction="chklogin.jsp"method="post"name="form1"onSubmit="returncheck()"><tr><tdwidth="222"align="right">昵称:</td><tdwidth="278"><!--表单中的用户昵称输入框,name属性为nickName,用于后台处理页面接收用户输入的昵称--><inputtype="text"name="nickName"style="width:150"></td></tr><tr><tdcolspan="2"></td></tr><tr><tdalign="right">密码:</td><td><!--表单中的登录密码输入框,name属性为userPassword,用于后台处理页面接收用户输入的密码--><inputtype="password"name="userPassword"style="width:150"></td></tr><tr><tdcolspan="2"align="center"height="30"valign="bottom"><inputtype="submit"value="登录"> <inputtype="reset"value="取消"></td></tr><!--下面那个/form说是找不到起始标签--></form><tr><tdheight="50"valign="bottom"colspan="2">本聊天系统无须注册,登录成功后系统将自动保存你的用户名和密码。</td></tr></TABLE></body></html>
解决方案
解决方案二:
对了,login.jsp可以打开运行,但是输入用户名和密码之后按确定跳入chklogin.jsp时就出错了。typeExceptionreportmessagedescriptionTheserverencounteredaninternalerror()thatpreventeditfromfulfillingthisrequest.exceptionorg.apache.jasper.JasperExceptionorg.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)javax.servlet.http.HttpServlet.service(HttpServlet.java:802)rootcausejava.lang.NullPointerExceptionnet.chat.CheckLogin.checklogin(CheckLogin.java:68)org.apache.jsp.chklogin_jsp._jspService(chklogin_jsp.java:82)org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)javax.servlet.http.HttpServlet.service(HttpServlet.java:802)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)javax.servlet.http.HttpServlet.service(HttpServlet.java:802)noteThefullstacktraceoftherootcauseisavailableintheApacheTomcat/5.0.28logs.以上是错误,我真看不懂,真的很菜,望大家指导下
解决方案三:
问一下,这个到底是代码问题,还是eclipse问题,还是tomcat问题还是sql2005的问题呢?,现在不知道这四个里面哪个有问题,login.jsp是可以打开的.
解决方案四:
之前发错地方了,现在拷贝过来心急忘了把要问的高亮了。这个是高亮以后的(红色字的地方):<!--用page指令定义语言为java页面编码为utf-8--><%@pagelanguage="java"pageEncoding="utf-8"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>聊天用户登录</title><!--<linkrel="stylesheet"type="text/css"href="styles.css">--><scriptlanguage="javascript">//javascriptcheck函数,用于检查表单中输入的用户昵称和登录密码是否为空functioncheck(){if(document.form1.nickName.value==''){alert("用户昵称不能为空!");document.form1.nickName.focus();returnfalse;}elseif(document.form1.userPassword.value==''){alert("登录密码不能为空");document.form1.userPassword.focus();returnfalse;}elsereturntrue;}</script></head><body><TABLEalign="center"cellpadding="0"cellspacing="0"border="0"width="500"><tr><tdheight="100"colspan="2"style="font-size:18px;font-weight:bold"align="center">聊天用户登录</td></tr><!--定义一个form表单,表单提交的后台处理页面为chklogin.jsp--><!--以下form这一行有警告--><formaction="chklogin.jsp"method="post"name="form1"onSubmit="returncheck()"><tr><tdwidth="222"align="right">昵称:</td><tdwidth="278"><!--表单中的用户昵称输入框,name属性为nickName,用于后台处理页面接收用户输入的昵称--><inputtype="text"name="nickName"style="width:150"></td></tr><tr><tdcolspan="2"></td></tr><tr><tdalign="right">密码:</td><td><!--表单中的登录密码输入框,name属性为userPassword,用于后台处理页面接收用户输入的密码--><inputtype="password"name="userPassword"style="width:150"></td></tr><tr><tdcolspan="2"align="center"height="30"valign="bottom"><inputtype="submit"value="登录"> <inputtype="reset"value="取消"></td></tr><!--下面那个/form说是找不到起始标签--></form><tr><tdheight="50"valign="bottom"colspan="2">本聊天系统无须注册,登录成功后系统将自动保存你的用户名和密码。</td></tr></TABLE></body></html>
解决方案五:
java.lang.NullPointerExceptionnet.chat.CheckLogin.checklogin(CheckLogin.java:68)68行有错,你把你的CheckLogin.java贴过来检查一下,空指针一般都是空对象或者数据库里面没有值等等原因导致
解决方案六:
我以前用Myeclipse6.5也遇到过这种问题,有时把form这段剪切,在复制就没问题了但是有时解决不了,不过部署到服务器是没问题的
解决方案七:
1.你这个页面报的错<!--下面那个/form说是找不到起始标签--></form>把<form></form>放到<table></table>外面就可以了2.空指针异常,可能是你前一个页面的的参数没得到。被转换成servlet的chklogin_jsp.java:82有错误,你可以到tomcat文件夹workCatalinalocalhost你的项目名orgapachejsp这个文件下面把chklogin_jsp.java打开看看第82行到底错在哪里了。还有CheckLogin.java这是你用来做什么的类?没提到过。
解决方案八:
嗯,form的问题解决了,下面是chklogin.jsp的代码,我也觉得是数据传输的问题,所以很纳闷<%@pagelanguage="java"import="java.util.*,net.chat.*"pageEncoding="UTF-8"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>聊天用户登录</title><metahttp-equiv="pragma"content="no-cache"><metahttp-equiv="cache-control"content="no-cache"><metahttp-equiv="expires"content="0"></head><jsp:useBeanid="check"class="net.chat.CheckLogin"/><body><%/*设置request的字符集为GB2312GB2312就是简体中文字符集,如果在这里不设置GB2312编码,所有的中文字符都会变为乱码。如果在这里需要使用繁体中文的话也会出现字符乱码的问题,将GB2312改为GBK可解决。*/request.setCharacterEncoding("GB2312");//获取用户昵称StringnickName=request.getParameter("nickName");//获取用户密码StringuserPassword=request.getParameter("userPassword");//将获取到的用户登录信息与数据库中保存的用户信息进行比较StringloginMsg=check.checklogin(nickName,userPassword);if(loginMsg.equals("SUCCESS_LOGIN")){//登录成功将昵称保存到session中session.setAttribute("_USER",nickName);//在session中添加一个登录成功的标记session.setAttribute("_LOGIN","_SUCCESS");//转到聊天室选择页面response.sendRedirect("chatRoomList.jsp");}elseif(loginMsg.equals("WRONG_PASSWORD")){out.println("你输入的用户名或密码错误,请检正后重新输入");//清除session中保存的登录信息if(session.getAttribute("_LOGIN")!=null)session.removeAttribute("_LOGIN");}elseif(loginMsg.equals("NONE_USER")){//将新用户信息保存到数据库中check.saveToDataBase(nickName,userPassword);//登录成功将昵称保存到session中session.setAttribute("_USER",nickName);//在session中添加一个登录成功的标记session.setAttribute("_LOGIN","_SUCCESS");//转到聊天室选择页面response.sendRedirect("chatRoomList.jsp");}%></body></html>
解决方案九:
发错了。。。那个是jsp,下面这个是javapackagenet.chat;importjava.sql.*;importjava.util.*;importjava.text.SimpleDateFormat;publicclassCheckLogin{/***检测用户登录信息*@paramStringuserName*用户登录的用户名*@paramStringuserPassword*用户登录的密码*@returnString*返回一个字符串:如果用户名已经在数据库存在并且用户输入的密码也正确返回字符串SUCCESS_LOGIN*如果用户名已经在数据库存在但是输入的密码不正确返回字符串WRONG_PASSWROD*如果用户名不存在返回字符串NONE_USER**/publicStringchecklogin(StringuserName,StringuserPassword)throwsSQLException,ClassNotFoundException{BaseConnconn=null;try{conn=newBaseConn();//创建一个用预处理的SQL语句Stringsql="select*fromuserInfowherenickName=?";//创建一个预处理SQL对象PreparedStatementps=conn.preparedStatement(sql);ps.setString(1,userName);//从数据库中查询该用户名是否在数据库存在ResultSetrs=conn.executeQuery();if(rs.next()){if(rs.getString("userPassword").equals(userPassword)){SimpleDateFormatcal=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Stringtime=cal.format(newjava.util.Date());//修改用户的最后登录时间sql="updateuserInfosetlastLoginTime=?wherenickName=?";ps=conn.preparedStatement(sql);ps.setString(1,time);ps.setString(2,userName);conn.executeUpdate();return"SUCCESS_LOGIN";}elsereturn"WRONG_PASSWORD";}elsereturn"NONE_USER";}catch(SQLExceptionex){ex.printStackTrace();throwex;}catch(ClassNotFoundExceptionex){ex.printStackTrace();throwex;}finally{conn.closeDB();//关闭数据库连接,释放JDBC资源}}/***如果是新用户时,将用户登录用户名和密码保存到数据库中**/publicbooleansaveToDataBase(StringuserName,StringuserPassword)throwsSQLException,ClassNotFoundException{BaseConnconn=null;try{conn=newBaseConn();SimpleDateFormatcal=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");Stringtime=cal.format(newjava.util.Date());Stringsql="insertintouserInfo(nickName,userPassword,lastLoginTime,role)values(?,?,?,?)";PreparedStatementps=conn.preparedStatement(sql);ps.setString(1,userName);ps.setString(2,userPassword);ps.setString(3,time);ps.setInt(4,0);conn.executeUpdate();returntrue;}catch(SQLExceptionex){ex.printStackTrace();throwex;}catch(ClassNotFoundExceptionex){ex.printStackTrace();throwex;}finally{conn.closeDB();//关闭数据库连接,释放JDBC资源}}}
解决方案十:
importjava.util.*;这句话显示提示说没有从来没有被使用