如何使用servlet和java正确显示Mysql表?

如何使用servlet和java正确显示Mysql表?,java,mysql,jsp,servlets,Java,Mysql,Jsp,Servlets,我是这里的新手。我有一个任务需要连接mysql、servlet和java(因为我想将java代码和html代码分开。之前,我将这些代码组合在一起以使其更简单,但被拒绝) 所以,基本上,我用mySql写这个 create table login2 (username varchar (30), password varchar(30), designation varchar(10)); insert into login2 values('lala','123','A'); 我使用eclips

我是这里的新手。我有一个任务需要连接mysql、servlet和java(因为我想将java代码和html代码分开。之前,我将这些代码组合在一起以使其更简单,但被拒绝) 所以,基本上,我用mySql写这个

create table login2 (username varchar (30), password varchar(30), designation varchar(10));
insert into login2 values('lala','123','A');
我使用eclipse在servlet中创建loginDisp.java。这是我的命令

 package Servlet;

import java.io.*;
import java.util.*;
import javax.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class loginDisp extends HttpServlet {
  public void service(HttpServletRequest request,
  HttpServletResponse response)
  throws IOException, ServletException{
    //  String username=request.getParameter("Username");
     // String password=request.getParameter("Password");

  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  out.println("<html>");
  out.println("<head><title>Servlet JDBC</title></head>");
  out.println("<body>");
  out.println("<h1>Servlet JDBC</h1>");
  out.println("</body></html>");  
  // connecting to database
  Connection con = null;  
  Statement stmt = null;
  ResultSet rs = null;
  try {
  Class.forName("com.mysql.jdbc.Driver");
  con =DriverManager.getConnection 
  ("url/tablename","uname","pssword");
  stmt = con.createStatement();
  rs = stmt.executeQuery("SELECT * FROM login2");
  // displaying records
  while(rs.next()){
  out.print(rs.getObject(1).toString());
  out.print("\t\t\t");
  out.print(rs.getObject(2).toString());
  out.print("<br>");
  }

  } catch (SQLException e) {
 throw new ServletException("Servlet Could not display records.", e);
  } catch (ClassNotFoundException e) {
  throw new ServletException("JDBC Driver not found.", e);
  } finally {
  try {
  if(rs != null) {
  rs.close();
  rs = null;
  }
  if(stmt != null) {
  stmt.close();
  stmt = null;
  }
  if(con != null) {
  con.close();
  con = null;
  }
  } catch (SQLException e) {}
  }
  out.close();
  }
  }

在login.jsp中插入的用户名和密码不会自动插入mySQL,因此当我尝试执行loginDisp.java时,它将只显示我在mySQL中手动插入的数据。

您在表单中输入了错误的操作

由于表单的action属性采用servlet的路径,因此应该给出
web.xml

action="loginDisplay.java"  
应该是
action=“/loginDisplay”


应该是

<form name="form1" method="post" action="/loginDisplay" onsubmit="return validateForm()">

如果
/loginDisplay
不是web.xml中的精确映射,请检查web.xml文件,查看loginDisplay的映射,并将该路径作为操作提供


您在表单中输入了错误的操作

由于表单的action属性采用servlet的路径,因此应该给出
web.xml

action="loginDisplay.java"  
应该是
action=“/loginDisplay”


应该是

<form name="form1" method="post" action="/loginDisplay" onsubmit="return validateForm()">

如果
/loginDisplay
不是web.xml中的精确映射,请检查web.xml文件,查看loginDisplay的映射,并将该路径作为操作提供


您不能使用java文件名作为操作,这是在web.xml文件中定义的,并且存在servlet映射,您可以使用

  <servlet>
    <servlet-name>log</servlet-name>
    <servlet-class>loginDisplay</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>log</servlet-name>
    <url-pattern>/loginDisplay</url-pattern>
  </servlet-mapping>

日志
逻辑显示
日志
/逻辑显示
现在,您可以在action标记中使用
action=“loginDisplay”
,并使用


我希望您没有遇到
404错误的问题

您不能使用java文件名作为操作这是在web.xml文件中定义的,并且有servlet映射,您可以使用

  <servlet>
    <servlet-name>log</servlet-name>
    <servlet-class>loginDisplay</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>log</servlet-name>
    <url-pattern>/loginDisplay</url-pattern>
  </servlet-mapping>

日志
逻辑显示
日志
/逻辑显示
现在,您可以在action标记中使用
action=“loginDisplay”
,并使用

我希望您没有遇到
404错误的问题

创建一个新的包(称为dao或模型),将逻辑放在其中访问数据库

然后创建一个JavaBean对象,在其中存储DB的结果并在servlet中实例化逻辑类,然后访问Bean的属性并在WEB中显示它

包装型号: 类DaoAccess(与DB连接的方法) 类登录(表的属性,每个表的getXXX和setXXX)

包Servlet。 类loginDisplay:

    public class loginDisplay extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>Servlet JDBC</title></head>");
        out.println("<body>");
        out.println("<h1>loginDisplay</h1>");
        out.println("</body></html>");
        // connecting to database
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;

        DaoAccess dao = new DaoAccess();

        List<Login> list = dao.readAll();

        for(Login obj: list){
            out.write(obj.getName());
            out.write(obj.getPassword());
        }
        out.close();
    }
}
public类loginDisplay扩展了HttpServlet{
公共无效服务(HttpServletRequest请求、HttpServletResponse响应)
抛出IOException、ServletException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
out.println(“”);
out.println(“Servlet JDBC”);
out.println(“”);
out.println(“loginDisplay”);
out.println(“”);
//连接到数据库
连接con=null;
语句stmt=null;
结果集rs=null;
DaoAccess dao=新的DaoAccess();
List=dao.readAll();
用于(登录对象:列表){
out.write(obj.getName());
out.write(obj.getPassword());
}
out.close();
}
}
创建一个新的包(称为dao或模型),将逻辑放在其中以访问数据库

然后创建一个JavaBean对象,在其中存储DB的结果并在servlet中实例化逻辑类,然后访问Bean的属性并在WEB中显示它

包装型号: 类DaoAccess(与DB连接的方法) 类登录(表的属性,每个表的getXXX和setXXX)

包Servlet。 类loginDisplay:

    public class loginDisplay extends HttpServlet {
    public void service(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>Servlet JDBC</title></head>");
        out.println("<body>");
        out.println("<h1>loginDisplay</h1>");
        out.println("</body></html>");
        // connecting to database
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;

        DaoAccess dao = new DaoAccess();

        List<Login> list = dao.readAll();

        for(Login obj: list){
            out.write(obj.getName());
            out.write(obj.getPassword());
        }
        out.close();
    }
}
public类loginDisplay扩展了HttpServlet{
公共无效服务(HttpServletRequest请求、HttpServletResponse响应)
抛出IOException、ServletException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
out.println(“”);
out.println(“Servlet JDBC”);
out.println(“”);
out.println(“loginDisplay”);
out.println(“”);
//连接到数据库
连接con=null;
语句stmt=null;
结果集rs=null;
DaoAccess dao=新的DaoAccess();
List=dao.readAll();
用于(登录对象:列表){
out.write(obj.getName());
out.write(obj.getPassword());
}
out.close();
}
}

需要将
操作
url映射到目标Servlet@没错,这应该在
web.xml
:)@sureshatta中完成。非常感谢。。我真的很感激。我完全按照你说的做了,但是当我尝试输入新的用户名和密码时,我遇到了505错误。因此,我尝试像以前一样执行displayLogin.java,我得到这个HTTP状态404-/DermijianTest/servlet/servlet.loginDisplay--------------------------------------------------------------------键入状态报告消息/DermijianTest/servlet/servlet。loginDisplay@sureshatta是的,这是错误。我基本上希望通过.jsp将数据输入mysql。。loginDisplay java.lang.ClassNotFoundException:loginDisplay您可以用您在web.xml中所做的以及您在html表单中更新的操作编辑帖子,以便我们检查它。该
操作
url需要映射到目标Servlet@没错,这应该在
web.xml
:)@sureshatta中完成。非常感谢。。我真的很感激。我完全按照你说的做了,但是当我尝试输入一个新的用户名和密码时,我遇到了505个错误