下面是代码:
描述:选学生能注册,但是选择教师的时候选择不了。希望高手帮我找找问题。谢谢了!
<%@ page contentType="text/html;charset=gb2312" language="java"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<title>用户手册</title>
<script language="javascript">
function IsDigit(cCheck)
{
return (('0'<=cCheck)&&(cCheck<='9'));
}
function IsAlpha(cCheck)
{
return ((('a'<=cCheck)&&(cCheck<='z'))||(('A'<=cCheck)&&(cCheck<='Z')));
}
function IsValid()
{
var struserName=reg.UserName.value;
for(nIndex=0;nIndex<struserName.length;nIndex++)
{
cCheck=struserName.charAt(nIndex);
if(!(IsDigit(cCheck)||IsAlpha(cCheck)))
{
return false;
}
}
return true;
}
function chkEmail(str)
{
return
str.search(/[\w\-]{1,}@[\w\-]{1,}\.[\w\-]{1,}/)==0?true:false
}
function docheck()
{
if(reg.UserName.value=="")
{
alert("请输入用户名");
return false;
}
else if(!IsValid())
{
alert("用户名只能使用字母和数字");
return false;
}
else if(reg.UserPassword.value=="")
{
alert("请填写密码");
return false;
}
else if(reg.UserPassWord.value!=reg.CUserPassword.value)
{
alert("两次密码不一致")
return false;
}
else if(reg.NickName.value=="")
{
alert("请填写昵称")
return false;
}
else if(reg.Email.value=="")
{
alert("请填写邮箱")
return false;
}
else if(!chkEmail(reg.Email.value))
{
alert("请填写有效的Email地址")
return false;
}
else
{
return true;
}
}
</script>
<STYLE TYPE="text/css">
td,th{
font-family:Arial,Helvetica,sans-serif;
font-size:14px;
line-height:24px;
color:#333333;
}
</STYLE>
</head>
<body>
<h1 align="center">用户注册</h1>
<div align="center">
<form name="reg" action="user_add.jsp" method="post"  target="_self" onSubmit="return docheck()">
<table width="90%" border="0">
<tr>
<td width="50%" align="right" height="25">
<font face="Arial,Helvetica,sans-serif">请输入要注册的用户名:</font>
</td>
<td width="50%" align="left" height="25">&nbsp;
<input type="text" name="UserName">
<br>
<font color="red">&nbsp;用户只能由字母和数字组成</font>
</td>
</tr> <tr>
<td width="50%" align="right" height="25">请输入密码:</td>
<td width="50%" align="left" height="25">&nbsp;
<input type="password" name="UserPassword"></td>
</tr>

<tr>
<td width="50%" align="right" height="25">请输入确认密码:</td>
<td width="50%" align="left" height="25">&nbsp;
<input type="password" name="CUserPassword"></td>
</tr> <tr>
<td width="50%" align="right" height="25">请输入昵称:</td>
<td width="50%" align="left" height="25">&nbsp;
<input type="text" name="NickName"></td>
</tr> <tr>
<td width="50%" align="right" height="25">请选择性别:</td>
<td width="50%" align="left" height="25">&nbsp;<input type="radio" name="Sex" value="0" >男&nbsp;<input type="radio" name="Sex" value="1">女</td>
</tr> <tr>
<td width="50%" align="right" height="25">请输入Email地址:</td>
<td width="50%" align="left" height="25">&nbsp;
<input type="text" name="Email"></td>
</tr> <tr>
<td width="50%" align="right" height="25">请选择用户类别:</td>
<td width="50%" align="left" height="25">&nbsp;
<select  name="select" >
<option value="0" >学生</option>
<option value="1">教师</option>
<option value="2">管理员</option>
</select>
</td>

</tr>


</table>
<p>
<input type="submit" name="sub" value="注册">&nbsp;&nbsp;&nbsp;&nbsp;
<input type="reset" name="res" value="重填">
</p>
</form>
</div>
</body>
</html><%@ page contentType="text/html;charset=gb2312" language="java"%>
<%@ page import="java.sql.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<title>用户注册</title>
</head>
<body>
<%
String strSql="";
String database_username="sa";//数据库的用户名
String database_password="sa";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ZYGL";
//ZYGL为数据库

try
{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection dbConn=DriverManager.getConnection(url,database_username,database_password);
Statement stmt=dbConn.createStatement();
ResultSet rs=null;

String s_UserName=request.getParameter("UserName");


   
String select = new String (request.getParameter("select"));
int type=Integer.parseInt(select);
switch (type) 

     case 0: 
        {strSql="select * from student where UserName like '"+s_UserName+"'";
         break; }
     case 1: 
        { strSql="select * from teacher where UserName like '"+s_UserName+"'";
         break; }
         
     





rs=stmt.executeQuery(strSql);
if(rs.next())
{
out.println("<h1 align=center>用户名<font color=red>"+s_UserName+"</font>已经存在!</h1>");
out.println("<div align=center><input type=button name=btn value=返回 onClick='window.history.go(-1)'></div>");
}
else
{

String s_UserPassword=request.getParameter("UserPassword");
String s_NickName=request.getParameter("NickName");
String s_Sex=request.getParameter("Sex");
String s_Email=request.getParameter("Email");



switch (type) 

     case 0: 
        {strSql="insert into student (UserName,UserPassword,NickName,Sex,Email) values ('"+s_UserName+"','"+s_UserPassword+"','"+s_NickName+"','"+s_Sex+"','"+s_Email+"')";
         break; }
     case 1: 
        {strSql="insert into teacher (UserName,UserPassword,NickName,Sex,Email) values ('"+s_UserName+"','"+s_UserPassword+"','"+s_NickName+"','"+s_Sex+"','"+s_Email+"',)";
         break; }
     

stmt.executeUpdate(strSql);


out.println("<h1 align=center>用户注册成功,您的注册信息如下 </h1>");
out.println("<p align=center>用户名:<font color=blue>"+s_UserName+"</font></p>");
out.println("<p align=center>密码:<font color=blue>"+s_UserPassword+"</font></p>");
out.println("<p align=center>昵称:<font color=blue>"+s_NickName+"</font></p>"); if(s_Sex.equals("0"))
{
out.println("<p align=center>性别:<font color=blue>男</font></p>");
}
else
{
out.println("<p align=center>性别:<font color=blue>女</font></p>");
}
out.println("<p align=center>Email:<font color=blue>"+s_Email+"</font></p>");
}
rs.close();
stmt.close();
dbConn.close();
}
catch(Exception ex)
{
out.println("<h1 align=center>用户注册失败</h1>");
out.println("<div align=center><input type=button name=btn2 value=返回  onclick='window.history.go(-1)'></div>");
}
%>
</body>
</html>

解决方案 »

  1.   

    Stacktrace:
    at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
    at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
    at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:316)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:294)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:281)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
      

  2.   

    恩。
    找出了,我也要顶一下。
    你的第二个switch里面插入到教师表中的语句最后只多了个逗号:
    switch (type) 

      case 0: 
          {strSql="insert into student (UserName,UserPassword,NickName,Sex,Email) values ('"+s_UserName+"','"+s_UserPassword+"','"+s_NickName+"','"+s_Sex+"','"+s_Email+"')"; 
            break; } 
        case 1: 
          {strSql="insert into teacher (UserName,UserPassword,NickName,Sex,Email) values ('"+s_UserName+"','"+s_UserPassword+"','"+s_NickName+"','"+s_Sex+"','"+s_Email+"',)"; 
          break; }     

    其他的没什么问题,修改后两个表都能插入,但是不知道你的数据库结构是什么,我的数据库类型都是nchar类型的(为了测试方便哈),还有就是那个用户已存在那个它一直就过去了,从来没执行过。
    可能和你写的检查语句有关系吧,也有可能和我的数据结构有关系。
    此两页面再Tomcat 5.0+MyEclipse 5.1.0GA+MSSQL2005(Windows Server 2003)下通过。