小弟现在在做一个学生实践管理系统,遇到了一些问题,特地跑来向各位请教!!!!!!
<%@ page language="java" import="java.util.*,Connection.Yong,java.sql.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'StudentListByNumber.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->  </head>
  <script src="JavaScript/tools.js" type="text/javascript"></script>
  <%
    String Stu_Number=request.getParameter("stu_number");
    String sql="select * from [Student] where Stu_Number='"+Stu_Number+"'";
     Yong yong=new Yong();
     ResultSet rs=yong.Query(sql);
   %>
  <body>
    <table>
  <tr>
  <td width=200>学生姓名</td>
  <td width=200>学号</td>
  <td width=200>专业</td>
  <td width=200>班级</td>
  <td colspan="2" width=400 align="center">操作</td>
  </tr>
   <% 
     if(rs.next()){
     String stu_number=rs.getString(2);
     %>
     <tr>
     <td><%=rs.getString(1) %></td>
     <td><%=rs.getString(2) %></td>
     <td><%=rs.getString(4) %></td>
     <td><%=rs.getString(5) %></td>
     <td align="center"><a href=/SPMS/UserManagement/EditStudent.jsp?id=<%=rs.getString(2)%>>修改信息</a></td>
     <td align="center" onclick="javascript:DeleteStudent()"><input type="button" value="删除"/></td></tr>
     <%}
     else{
      out.print("<script>alert('该学号不存在,请重新输入');window.window.location.href='/SPMS/UserManagement/SearchStudentByNumber.jsp';</script>");
       }
     rs.close();
     yong.close();
     %>
    </table> 
  </body>
</html>
这是一个学生列表的JSP页,我想通过一个JS的confirm函数提交给下一页。JS代码如下:function DeleteStudent(){
var answer = confirm("确定删除该生信息?")
if (answer){
 var url = "/SPMS/UserManagement/DeleteStudent.jsp?id=" +stu_number;
  url=encodeURI(url); 
  url=encodeURI(url); 
}
else{

} }然后跳到DeleteStudent.jsp页处理信息
<%@ page language="java" import="java.util.*,Connection.Yong,java.sql.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>删除学生</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->  </head>
  <body>
    <%
      request.setCharacterEncoding("gb2312");
      String Stu_Number=request.getParameter("id");
      String sql="delete from [Student] where Stu_Number='"+Stu_Number+"'";
      Yong LJ=new Yong();
      int a=0;
      a=LJ.Update(sql);
      if(a==1){
       out.print("<script>alert('操作成功');window.window.location.href='';</script>");
       }
      else{
       out.print("<script>alert('操作失败,请重新删除');window.window.location.href='';");
       }
      LJ.close();
      %>
  </body>
</html>我用的是MYeclipse8.0
错误代码如下:Parameters: Character decoding failed. Parameter skipped.
java.io.CharConversionException: isHexDigit
at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:88)
at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:49)
at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:412)
at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:394)
at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:510)
at org.apache.tomcat.util.http.Parameters.handleQueryParameters(Parameters.java:267)
at org.apache.catalina.connector.Request.parseParameters(Request.java:2453)
at org.apache.catalina.connector.Request.getParameter(Request.java:1040)
at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:355)
at org.apache.jsp.UserManagement.DeleteStudent_jsp._jspService(DeleteStudent_jsp.java:87)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
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:191)
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:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
请各位指教,谢谢,在线等答案,跪拜!!

解决方案 »

  1.   

    我是业余的 也不知道这个问题应该怎么说 大概就是JSP到JAVASCRIPT再到JSP,JAVASCRIPT到JSP这个过程不会操作,参数传递不过来,无法删除学生记录!
      

  2.   

    我很想知道,你的提交怎么提交的,不用FORM,直接链接?
      

  3.   

    url=encodeURI(url);  
    url=encodeURI(url); 
    没有中文不需要二次编码
      

  4.   

    ?xxx=xxx&xxx=xxx这样传不过来?
      

  5.   

    关于参数的传递建议这么处理:
    1。 JS函数改成带参数的:
    function DeleteStudent(stu_number){
    ......
    }
    此外,你写的这个函数里没有跳转到指定删除页的代码,应该加上吧。
    2. 删除按钮的代码由原来的<td align="center" onclick="javascript:DeleteStudent()"><input type="button" value="删除"/></td> 
    改成:
    <td align="center"> <input type="button" value="删除" onclick="javascript:DeleteStudent(<%=stu_number%>)"/></td>
    以上建议供参考。
      

  6.   

    sorry,JS函数调用的少了引号,应该是:
    <td align="center"> <input type="button" value="删除" onclick="javascript:DeleteStudent('<%=stu_number%>')"/></td>
      

  7.   

    首先你的修改是连接,那么最好也把删除做成连接,要不感觉页面风格不一直。
    <%@ page language="java" import="java.util.*,Connection.Yong,java.sql.*" pageEncoding="gb2312"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>">
    <title>My JSP 'StudentListByNumber.jsp' starting page</title></head>
    <script src="JavaScript/tools.js" type="text/javascript"></script>
    <script type="text/javascript">
    function delete(id){
    if(confirm("确定删除该生信息?")){
       window.location.href="/SPMS/UserManagement/DeleteStudent.jsp?id="+id;
    }
    }
    </script>
    <%
    String Stu_Number=request.getParameter("stu_number");
    String sql="select * from [Student] where Stu_Number='"+Stu_Number+"'";
    Yong yong=new Yong();
    ResultSet rs=yong.Query(sql);
    %>
    <body>
    <table>
    <tr>
    <td width=200>学生姓名</td>
    <td width=200>学号</td>
    <td width=200>专业</td>
    <td width=200>班级</td>
    <td colspan="2" width=400 align="center">操作</td>
    </tr>
    <% 
    if(rs.next()){
    String stu_number=rs.getString(2);
    %>
    <tr>
    <td><%=rs.getString(1) %></td>
    <td><%=rs.getString(2) %></td>
    <td><%=rs.getString(4) %></td>
    <td><%=rs.getString(5) %></td>
    <td align="center"><a href=/SPMS/UserManagement/EditStudent.jsp?id=<%=rs.getString(2)%>>修改信息</a></td>
    <td align="center" onclick="javascript:DeleteStudent()"><a onclick="delete(<%=rs.getString(2)%>)">删除</a></td></tr>
    <%}
    else{
    out.print("<script>alert('该学号不存在,请重新输入');window.window.location.href='/SPMS/UserManagement/SearchStudentByNumber.jsp';</script>");
    }
    rs.close();
    yong.close();
    %>
    </table> 
    </body>
    </html>
      

  8.   

    从error log很清楚,参数问题,首先一般不要用id作为key值传参:第一:
    function DeleteStudent(){
    var answer = confirm("确定删除该生信息?")
    if (answer){
    var url = "/SPMS/UserManagement/DeleteStudent.jsp?id=" +stu_number; --->stu_number值从哪里来的?
    url=encodeURI(url);  
    url=encodeURI(url);  
    }第二:
      String Stu_Number=request.getParameter("id");
      //在这里应该先判断Stu_Numbe是否为空
      if(Stu_Number != null){

        String sql="delete from [Student] where Stu_Number='"+Stu_Number+"'";
      } else {
        out.print(.....)
      }