请教!Eclipse Jee 2018-09做JSP页面开发出错

初学Eclipse Jee 2018-09,在网上找到一个例子,做登录界面时出现错误
Eclipse Java EE IDE for Web Developers.

Version: 2018-09 (4.9.0)
Build id: 20180917-1800

java 1.8.0_191   tomcat 8.5  sqlserver2000,那几个JAR文件都安装了,也复制到ext文件夹下了,不知道是啥情况了,还需要在哪设置吗?



DBBean.java代码如下:

package Bean;
import java.sql.*;
public class DBBean {
    private String driverStr = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    private String connStr = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=zkz";
    private String dbusername = "sa";
    private String dbpassword = "";
    private Connection conn = null;
    private Statement stmt = null;

    public DBBean()
    {
        try
        {
            Class.forName(driverStr);
            conn = DriverManager.getConnection(connStr, dbusername, dbpassword);
            stmt = conn.createStatement();
        } 
        catch (Exception ex) {
            System.out.println("数据连接失败!");
        } 
        
    }

    public int executeUpdate(String s) {
        int result = 0;
        System.out.println("--更新语句:"+s+"\n");
        try {
            result = stmt.executeUpdate(s);
        } catch (Exception ex) {
            System.out.println("执行更新错误!");
        }
        return result;
    }

    public ResultSet executeQuery(String s) {
        ResultSet rs = null;
        System.out.print("--查询语句:"+s+"\n");
        try {
            rs = stmt.executeQuery(s);
        } catch (Exception ex) {
            System.out.println("ִ执行查询错误!");
        }
        return rs;
    }
    public void execQuery(String s){
        try {
            stmt.executeUpdate(s);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            System.out.println("执行插入错误!");
        }
    }

    public void close() {
        try {
            stmt.close();
            conn.close();
        } catch (Exception e) {
        }
    }
}


check.jsp代码如下:
<%
    request.setCharacterEncoding("UTF-8");
    String username=(String)request.getParameter("uname");
    String password=(String)request.getParameter("sfzh");//取出login.jsp的值
    String tel=(String)request.getParameter("tel");

    
    //下面是数据库操作
    String sql="select * from ksxx where name=" + "'" + username + "'";//定义一个查询语句
    ResultSet rs=db.executeQuery(sql);//运行上面的语句  //此句报错
    if(rs.next())
    {
        /* if(password.equals(rs.getString(2)))
        {
            
        } */
        if(password.equals(rs.getObject("sfzh"))){
            response.sendRedirect("luxinxi.jsp");
        }
        else{
            out.print(" alert('密码错误');");
            response.setHeader("refresh", "0;url=index.jsp");
        }
    }
    else 
    {
        out.print(" alert('账号错误——else');");
        response.setHeader("refresh", "0;url=index.jsp");
    }
    
%>

总是提示  ResultSet 无法解析为类型

运行起来提示如下错误:
Type 异常报告

消息 Unable to compile class for JSP: 

描述 服务器遇到一个意外的情况,
歌词下载阻止它完成请求。

Exception
org.apache.jasper.JasperException: Unable to compile class for JSP: 

JSP文件:[/logincheck.jsp] 的第 [20] 行发生了一个错误
ResultSet cannot be resolved to a type
17:     
18:     //涓嬮潰鏄暟鎹簱鎿嶄綔
19:     String sql="select * from ksxx where name=" + "'" + username + "'";//瀹氫箟涓�涓煡璇㈣鍙�
20:     ResultSet rs=db.executeQuery(sql);//杩愯涓婇潰鐨勮鍙�
21:     if(rs.next())
22:     {
23:         /* if(password.equals(rs.getString(2)))


Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:212)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:552)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:381)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:351)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:335)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:597)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

根据你的错位提示应该是:你在jsp文件中使用了ResultSet类,需要在jsp中引入该包,Import导入。
<%@ page import="java.sql.*" pageEncoding="UTF-8"%>

那个错误确实没有了,但是又报其他错误了
Type 异常报告

消息 /logincheck.jsp (行.: [11], 列: [1]) 页指令不能有多次出现的页编码

描述 服务器遇到一个意外的情况,阻止它完成请求。

Exception
org.apache.jasper.JasperException: /logincheck.jsp (行.: [11], 列: [1]) 页指令不能有多次出现的页编码
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:291)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:114)
org.apache.jasper.compiler.Validator$DirectiveVisitor.visit(Validator.java:199)
org.apache.jasper.compiler.Node$PageDirective.accept(Node.java:579)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2389)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2441)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2447)
org.apache.jasper.compiler.Node$Root.accept(Node.java:470)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2389)
org.apache.jasper.compiler.Validator.validateDirectives(Validator.java:1815)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:200)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:375)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:351)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:335)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:597)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


):注意 主要问题的全部 stack 信息可以在 server logs 里查看

<%@ page import="java.sql.*" pageEncoding="UTF-8"%> 好象是  pageEncoding="UTF-8" 的原因,删除出现其他错误了

Type 异常报告

消息 在 [22] 行处理 [/logincheck.jsp] 时发生异常

描述 服务器遇到一个意外的情况,阻止它完成请求。

Exception
org.apache.jasper.JasperException: 在 [22] 行处理 [/logincheck.jsp] 时发生异常

19:     //涓嬮潰鏄暟鎹簱鎿嶄綔
20:     String sql="select * from ksxx where name=" + "'" + username + "'";//瀹氫箟涓�涓煡璇㈣鍙�
21:     ResultSet rs=db.executeQuery(sql);//杩愯涓婇潰鐨勮鍙�
22:     if(rs.next())
23:     {
24:         /* if(password.equals(rs.getString(2)))
25:         {


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:617)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


Root Cause
java.lang.NullPointerException
org.apache.jsp.logincheck_jsp._jspService(logincheck_jsp.java:137)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


):注意 主要问题的全部 stack 信息可以在 server logs 里查看


Apache Tomcat/8.5.50

因为记录集可能是空,rs.next()有问题吗,网上查询资料说是可以当空返回是false 执行 的是else 语句呀,或者是不是数据没有连接成功呀,在哪里判断数据库连接成功是否呀

数据库连接不成功,启动服务的时候日志是会打印错误的,你为什么要把得到数据集的遍历结果放在jsp页面写呢,放在后台得到数据最好,然后将得到的数据赋值给对应的实体类,将实体类返回。这样,即使出错,你后台也可以断点看一下是什么原因啊。

放在后台怎么写呀,这是我从网上找的代码,刚刚学习,还不是很明白。

你可以上网找一些关于servlet和jsp的学习视频看看,刚接触的话,还是先学习,跟着网上的视频做个简单的项目就会有了解了。或是你可以直接百度找关于jsp的数据交互也行。东西还是比较多的。

 

你可能感兴趣的:(请教!Eclipse Jee 2018-09做JSP页面开发出错)