<%@ 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>
<script language="javascript">
function chkEmail(str)
{
return
str.search(/[\w\-]{1,}@[\w\-]{1,}\.[\w\-]{1,}/)==0?true:false
}
function check_info()
{
if(form1.NickName.value=="")
{
alert("请填写昵称");
return false;
}
else if(form1.Email.value=="")
{
alert("请填写邮箱");
return false;
}
else if(!chkEmail(form1.Email.value))
{
alert("请填写有效的Email地址")
return false;
}
else
{
return true;
}
}
function check_password()
{
if(form2.OldUserPassword.value=="")
{
alert("请填写旧密码");
return false;
}
else if(form2.UserPassword.value=="")
{
alert("请填写新密码");
return false;
}
else if(form2.UserPassWord.value!=form2.CUserPassword.value)
{
alert("确认密码与新密码不一致")
return false;
}
else 
{
return true;
}
}
</script>
</head>
<body>
<%
int l_UserID=0;
try
{
l_UserID=(int) session.getAttribute("UserID");//问题出在这里啊..................看这里。



}
catch(NumberFormatException ex)
{}
if(l_UserID!=0)
{
String strSql="";
String database_username="sa";
String database_password="sa";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ZYGL";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
Connection dbConn=DriverManager.getConnection(url,database_username,database_password);
Statement stmt=dbConn.createStatement();
strSql="select * from users where UserID="+l_UserID;
ResultSet  rs=stmt.executeQuery(strSql);
if(rs.next())
{
%>
<div align="center">
<h1 align="center">修改用户资料</h1>
<form name="form1" action="modify_info.jsp" method="post" target="_self" 
onSubmit="return check_info()">
<table width="80%" border="0">
<tr>
<td align="right" width="50%" bgcolor="#CCCCCC" height="25">用户名:</td>
<td align="left" width="50%"  height="25">&nbsp;
<input type="text" name="UserName"  value=<%=rs.getString("UserName")%>></td>
</tr> <tr>
<td align="right" width="50%" bgcolor="#CCCCCC" height="25">昵称:</td>
<td align="left" width="50%"  height="25">&nbsp;
<input type="text" name="NickName" value=<%=rs.getString("NickName")%>></td>
</tr>

<tr>
<td align="right" width="50%" bgcolor="#CCCCCC" height="25">性别:</td>
<td align="left" width="50%"  height="25">&nbsp;
<input type="radio" name="Sex" <%if(rs.getInt("Sex")==0)
{out.println("checked");}%> value="0">男&nbsp;
<input type="radio" name="Sex" <%if(rs.getInt("Sex")==1)
{out.println("checked");}%> value="1">女 
</td>
</tr> <tr>
<td align="right" width="50%" bgcolor="#CCCCCC" height="25">Email:</td>
<td align="left" width="50%"  height="25">&nbsp;
<input type="text" name="Email" value=<%=rs.getString("Email")%>></td>
</tr> <tr>
<td align="center" height="40" colspan="2">
<input type="submit" name="sub1" value="修改">&nbsp;&nbsp;&nbsp;&nbsp;
<input type="reset" name="res1" value="重填">
</td>
</tr>
</table>
</form>
<hr width="80%">
<h1 align="center">修改用户密码</h1>
<form name="form2" action="modify_password.jsp" method="post"
target="_self" onSubmit="return check_password()">
<table width="80%" border="0">
<tr>
<td align="right" width="50%" bgcolor="#CCCCCC" height="25">
请输入旧密码:</td>
<td align="left" width="50%"  height="25">&nbsp;
<input type="password" name="OldUserPassword"></td>
</tr> <tr>
<td align="right" width="50%" bgcolor="#CCCCCC" height="25">
请输入新密码:</td>
<td align="left" width="50%"  height="25">&nbsp;
<input type="password" name="UserPassword"></td>
</tr> <tr>
<td align="right" width="50%" bgcolor="#CCCCCC" height="25">
   请再输入一次新密码:</td>
<td align="left" width="50%"  height="25">&nbsp;
<input type="password" name="CUserPassword"></td>
</tr> <tr>
<td align="center" height="40" colspan="2">
<input type="submit" name="sub2" value="修改">&nbsp;&nbsp;&nbsp;&nbsp;
<input type="reset" name="res2" value="重填">
</td>
</tr>
</table>
</form>
</div>
<%
}
else
{
out.println("<h1 align=center>该用户信息不存在!</h1>");
out.println("<div align=center><input type=button  name=btn1 value=返回  onClick='window.history.go(-1)'></div>");
}
}
else
{
out.println("<h1 align=center>您还未登录!</h1>");
out.println("<div align=center><input type=button  name=btn2 value=登录   onClick=\"window.location='user_login.jsp'\"></div>");
}
%>
</body>
</html>
错误信息:
2009-5-26 15:19:16 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 65 in the jsp file: /user_info.jsp
Duplicate local variable l_UserID
62:  int l_UserID=0;
63:  try
64:  {
65:  int l_UserID=session.getAttribute("UserID");
66: 
67: 
68: 
An error occurred at line: 65 in the jsp file: /user_info.jsp
Type mismatch: cannot convert from Object to int
62:  int l_UserID=0;
63:  try
64:  {
65:  int l_UserID=session.getAttribute("UserID");
66: 
67: 
68: 
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)

解决方案 »

  1.   

    int l_UserID=session.getAttribute("UserID"); 
    没有进行类型转化
      

  2.   

    上面的错误信息没更新,看这个
    2009-5-26 15:31:57 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet jsp threw exception
    org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 65 in the jsp file: /user_info.jsp
    Cannot cast from Object to int
    62:  int l_UserID=0;
    63:  try
    64:  {
    65:  l_UserID=(int) session.getAttribute("UserID");
    66: 
    67: 
    68: 
    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)
      

  3.   

    int l_UserID=(Integer)session.getAttribute("UserID"); 
      

  4.   

    int l_UserID=Integer.parseInt((String)session.getAttribute("UserID")); 
      

  5.   

    还是不行啊,改后提示Type mismatch: cannot convert from Integer to int
      

  6.   

    上面是UserID为String的情况,
    如果你的UserID是Integerint l_UserID=((Integer)session.getAttribute("UserID")).intValue();