【问题标题】:task is not performed by servletservlet 不执行任务
【发布时间】:2015-06-02 11:18:55
【问题描述】:

您好,我创建了一个 servlet 来处理数据库操作,但是每当加载 servlet 时它什么都不做,这里只会出现一个白屏,这是我的 servlet 文件代码`protected void

doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    try {
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Connection successfull");
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String op=request.getParameter("operation");
    if(op=="create")
    {
    try {
        String usrnm=request.getParameter("usr");
        String pswd=request.getParameter("pass");
        String tp=request.getParameter("type");
        Connection con=DriverManager.getConnection(url, host, password);
        Statement stmt=con.createStatement();
        String sql="insert into login (username,password,type) values('"+usrnm+"','"+pswd+"','"+tp+"')";
        stmt.executeUpdate(sql);
        RequestDispatcher ct=request.getRequestDispatcher("createuser.jsp");
        ct.forward(request, response);
        con.close();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
    else if(op=="update")
    {
        try {
            String usrnm=request.getParameter("usr");
            String pswd=request.getParameter("pass");
            String tp=request.getParameter("type");
            Connection con=DriverManager.getConnection(url, host, password);
            Statement stmt=con.createStatement();
            String sql="update login set password='"+pswd+"' where username='"+usrnm+"'";
            stmt.executeUpdate(sql);
            RequestDispatcher rd=request.getRequestDispatcher("createuser.jsp");
            rd.forward(request, response);
            con.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    else if(op=="login"){
        try {
            String usrnm=request.getParameter("user");
            String pswd=request.getParameter("pass");
            String type=null;
            Connection con=DriverManager.getConnection(url, host, password);
            Statement stmt=con.createStatement();
            String sql="select * from login where username='"+usrnm+"' AND password='"+pswd+"'";
            ResultSet rs=stmt.executeQuery(sql);

            if(rs.first())
            {
                type=rs.getString(4);
                switch(type){
                case "admin":
                    RequestDispatcher admin=request.getRequestDispatcher("admin.jsp");
                    admin.forward(request, response);
                    break;
                case "selector":
                    RequestDispatcher selector=request.getRequestDispatcher("selector.jsp");
                    selector.forward(request, response);
                    break;
                case "player":
                    RequestDispatcher player=request.getRequestDispatcher("player.jsp");
                    player.forward(request, response);
                    break;
                case "comentator":
                    RequestDispatcher comentator=request.getRequestDispatcher("comentator.jsp");
                    comentator.forward(request, response);
                    break;
                }
            }
            else{
                RequestDispatcher rd=request.getRequestDispatcher("dummylogin.jsp");
                rd.forward(request, response);
            }               } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}`

我已经创建了两个jsp文件,这里是login.jsp的代码

'<div class="content_item">

      <h1 align="left">Welcome user, login here</h1>
      <br/><br/><br/>
      <form action="dbcon" method="post">
      <table cellspacing="15" cellpadding="15">
      <tr><td>
    <font size="5px" color="silver"><b>Username: </b></font></td><td><input type="text" name="user" id="user" style="height: 18px; width: 200px;" ></td></tr>
    <tr><td> <font size="5px" color="silver" style="font: bolder;"><b>Password: </b></font></td><td><input type="password" name="pass" id="pass" style="height: 18px; width: 200px;" ></td></tr>
  <tr><td></td><td></td></tr>
    <tr><td><input type="submit" onclick="return validate()" value="Login" style="height: 31px; width: 85px;"></td>
      <td><input type="reset" value="Reset" style="height: 31px;width: 85px;"></td></tr>
      </table></form>
    <input type="hidden" value="login" name="operation">
     </div> '

【问题讨论】:

  • 你怎么能说它什么都不做呢?你检查数据库了吗?
  • 是的,我已经检查过了,如果你可以看到我使用 requestdispatcher 重定向到另一个页面的 servlet 文件,所以它应该将我重定向到该页面,并且每当我们执行登录时,它都不会插入,更新或删除数据库。
  • 是的,我使用的是 2.5,所以映射是在 web.xml 中自动完成的,这里是 servlet 包 dbcon 的类名部分;导入 java.io.IOException;导入java.sql.Connection;导入 java.sql.DriverManager;导入java.sql.ResultSet;导入java.sql.SQLException;导入 java.sql.Statement;导入java.sql.*;公共类 dbcon 扩展 HttpServlet { String url="jdbc:mysql://localhost/citysportsclub";字符串主机=“根”;字符串密码="";私有静态最终长序列版本UID = 1L; * @see HttpServlet#HttpServlet()
  • 朋友我试过了,但它没有进入循环我试图打印一些东西,但什么也没发生。
  • 普通人我认为你没有得到我的问题以及 servlet 文件,我在加载我的 jdbc 驱动程序时打印的那一行正在打印,但没有发生任何事情进一步尝试了解 servlet 文件还有问题

标签: java mysql jsp servlets


【解决方案1】:

在您的代码中不会执行if

改变

if(op=="login")

if(op.equals("login"))

因为

==会比较参考

equals() 会比较值

【讨论】:

  • 仍然面临同样的事情:(
  • @Mukesh 你确定没问题可能是 servlet 更改没有生效尝试重新运行你的项目
  • 我已经检查过了,但它不起作用,现在我已经在一个单独的文件中分离了每个块,并且每当我分离代码时它都在工作,但它没有处理单个文件中的代码不知道有什么问题
猜你喜欢
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 2014-11-06
相关资源
最近更新 更多