package func;import java.io.IOException;
import java.sql.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import func.User;
public class Signin extends HttpServlet {
private static final long serialVersionUID = 1L;
private String CONTENT_TYPE = "text/html; charset=GB2312";
  Connection con=null;    public Signin() 
    {
   
    
     String sDBdriver="sun.jdbc.odbc.JdbcOdbcDriver";
     String sConnStr="jdbc:odbc:db";
    
         
     try{
     Class.forName(sDBdriver);
     con=DriverManager.getConnection(sConnStr);
     }
     catch(Exception e){
    
     }
       
   }  
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
         response.setContentType(CONTENT_TYPE);
         request.setCharacterEncoding("gb2312");
         

String s1=request.getParameter("num");
String s2=request.getParameter("password");

try {
Statement stm = con.createStatement();
ResultSet result = stm.executeQuery("select * from register where num='"+s1+"' and password='"+s2+"'");
if(result.next()){
RequestDispatcher dispatcher=request.getRequestDispatcher("/success.jsp");
         dispatcher.forward(request, response);
}
else{
RequestDispatcher dispatcher=request.getRequestDispatcher("/signin.jsp");
         dispatcher.forward(request, response);
}

con.close();
} catch (Exception e) {}

    
    



}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
doGet(request,response);


}



}

解决方案 »

  1.   

    RequestDispatcher dispatcher=request.getRequestDispatcher("/success.jsp");
    dispatcher.forward(request, response)
    把两句合并起来试试
    RequestDispatcher dispatcher=request.getRequestDispatcher("/success.jsp").forward(request,response)还不行把错误信息列出来
      

  2.   

    用这个试试 Response.Redirect("xxx.jsp")
    或者你看看是不是你jsp页的路径打错了
      

  3.   

    你的代码很多异常都没有处理、 只是捕获了而已 、并没处理、你的意思是跳错了页面还是显示问题  是想跳到/success.jsp还是/signin.jsp你的WebRoot  或 WebContent   下有这俩个文件么、
      

  4.   

    兄弟,WebContent下有这两个文件,但异常好像没有吧,求指教
      

  5.   

    这个很明显是有异常,没有进if-else,直接进catch了,楼主把异常打印出来,可能是你的某个表或则字符出错,这些小问题最容易忽略,反正肯定是有异常
      

  6.   

    catch (Exception e) {}
        

    你处理的异常只是捕获了  并没有对其操作、
    哪怕打印就会知道是否出错、catch (Exception e) {
        System.out.println("异常:"+e.getMessage());
    }
      

  7.   

    已经进入if else 了啊,异常在哪里找,我是菜鸟,用eclipse,求指教
      

  8.   

    异常:[Microsoft][ODBC Microsoft Access Driver] 标准表达式中数据类型不匹配。
    果然有异常,这个问题
      

  9.   

    异常:[Microsoft][ODBC Microsoft Access Driver] 标准表达式中数据类型不匹配。
    果然有异常,这个问题,求解决方法
      

  10.   

    2012-2-10 12:59:29 org.apache.catalina.core.AprLifecycleListener init
    信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_23\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jdk1.6.0_23//bin/../jre/bin/client;C:/Program Files/Java/jdk1.6.0_23//bin/../jre/bin;C:/Program Files/Java/jdk1.6.0_23//bin/../jre/lib/i386;C:\Program Files\Java\jdk1.6.0_23\\bin;C:\Program Files\Java\jre6\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;E:\Win7系统封装资料\[3]优化及设置\Windows7优化大师 V1.66 绿色版;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\Rational\common;C:\Program Files\MySQL\MySQL Server 5.5\bin;E:\study\VC\Tools\WinNT;E:\study\VC\MSDev98\Bin;E:\study\VC\Tools;E:\study\VC98\bin
    2012-2-10 12:59:29 org.apache.tomcat.util.digester.SetPropertiesRule begin
    警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:work' did not find a matching property.
    2012-2-10 12:59:29 org.apache.coyote.AbstractProtocolHandler init
    信息: Initializing ProtocolHandler ["http-bio-8080"]
    2012-2-10 12:59:29 org.apache.coyote.AbstractProtocolHandler init
    信息: Initializing ProtocolHandler ["ajp-bio-8009"]
    2012-2-10 12:59:29 org.apache.catalina.startup.Catalina load
    信息: Initialization processed in 752 ms
    2012-2-10 12:59:29 org.apache.catalina.core.StandardService startInternal
    信息: Starting service Catalina
    2012-2-10 12:59:29 org.apache.catalina.core.StandardEngine startInternal
    信息: Starting Servlet Engine: Apache Tomcat/7.0.8
    2012-2-10 12:59:30 org.apache.catalina.loader.WebappClassLoader validateJarFile
    信息: validateJarFile(D:\workspace\jsp\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\work\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
    2012-2-10 12:59:30 org.apache.coyote.AbstractProtocolHandler start
    信息: Starting ProtocolHandler ["http-bio-8080"]
    2012-2-10 12:59:30 org.apache.coyote.AbstractProtocolHandler start
    信息: Starting ProtocolHandler ["ajp-bio-8009"]
    2012-2-10 12:59:30 org.apache.catalina.startup.Catalina start
    信息: Server startup in 424 ms
    java.sql.SQLException: General error
    at sun.jdbc.odbc.JdbcOdbc.throwGenericSQLException(JdbcOdbc.java:7086)
    at sun.jdbc.odbc.JdbcOdbc.SQLAllocStmt(JdbcOdbc.java:173)
    at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(JdbcOdbcConnection.java:413)
    at sun.jdbc.odbc.JdbcOdbcConnection.createStatement(JdbcOdbcConnection.java:396)
    at func.Signin.doGet(Signin.java:47)
    at func.Signin.doPost(Signin.java:74)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
      

  11.   

    package func;import java.io.IOException;
    import java.sql.*;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import func.User;
    public class Signin extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private String CONTENT_TYPE = "text/html; charset=GB2312";
    Connection con=null;  public Signin()  
      {
        
      
      String sDBdriver="sun.jdbc.odbc.JdbcOdbcDriver";
      String sConnStr="jdbc:odbc:db";
      
      
      try{
      Class.forName(sDBdriver);
      con=DriverManager.getConnection(sConnStr);
      }
      catch(Exception e){
      
      }
      
      }   
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException

      String sDBdriver="sun.jdbc.odbc.JdbcOdbcDriver";
      String sConnStr="jdbc:odbc:db";
      
      
      try{
      Class.forName(sDBdriver);
      con=DriverManager.getConnection(sConnStr);
      }
      catch(Exception e){
      
      }
      
      response.setContentType(CONTENT_TYPE);
      request.setCharacterEncoding("gb2312");
        String s1=request.getParameter("num");
    String s2=request.getParameter("password");try {
    Statement stm = con.createStatement();
    ResultSet result = stm.executeQuery("select * from register where num='"+s1+"' and password='"+s2+"'");
    if(result.next()){
    RequestDispatcher dispatcher=request.getRequestDispatcher("/success.jsp");
    dispatcher.forward(request, response);
    }
    else{
    RequestDispatcher dispatcher=request.getRequestDispatcher("/signin.jsp");
    dispatcher.forward(request, response);
    }con.close();
    } catch (Exception e) {}  
      }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  
    {
    doGet(request,response);
    }}
    //大概是con对象为空的原因,把构造函数东西考下来
      

  12.   

    现在调试的结果是只能进行一次跳转,再跳转就出现
    java.sql.SQLException: General error
      

  13.   

    select * from register where num='"+s1+"' and password='"+s2+"'"
    1、你这句sql能在sql server里执行么?
    把是s1 和s2 给自己匹配个参数查询下2、在这包下func.Signin.doGet(Signin.java:47)这句话的47行是哪句话?
    ps:  个人认为是你 这个数据库 表register 里 字段 num 是int 类型的  而你num传递进去的参数是String类型  需要强制转换  【但是我不知道你password是什么类型的  具体请查看数据库的设计表结构   姑且认为是varchar的】 这样转换int num1 = Integer.parseInt(s1);
    把num1和s2传递进去查询
    变成这样select * from register where num='"+num1+"' and password='"+s2+"'"
    3、如果还不行我做一个改动你试试从jsp获取s1 s2 那不变,
    下面从Statement stm = con.createStatement();  开始改动 java.sql.PreparedStatement ps = conn.prepareStatement("select * from register  where num = ? and password = ? ");
     ps.setString(1,s1);  
    //如果ps.setString(); 不行换成  int num1 = Integer.parseInt(s1);
    // ps.setInt(1,num1);  【看你num字段是int还是varchar的】
    ps.setString(2,s2);
     java.sql.ResultSet   rs = ps.executeQuery();
    //然后下面都相同了   变量名你自己换下。
      

  14.   

    我又查了查资料当往数据库中添加相同主键的记录时会报这个异常。又看了看你的代码也可能有没有关闭连接的原因引起。你的con  关闭了 其他的没有关闭  stm   result if(stm != null){
        stm.close(); 【try catch一定要捕获 并且处理异常】
    }
    if(result != null){
       result.close();【try catch一定要捕获 并且处理异常】
    }
    if(con != null){
       con.close();【try catch一定要捕获 并且处理异常】
    }
    你代码try catch 记得要捕获 而且要处理异常  
    如果不捕获你永远都不知道自己处于错误里而迷茫没报异常。