_lizi_ 2019-12-11 21:40 采纳率: 16.7%
浏览 405

Java WEB 连接数据库的登录界面失败?

使用Eclipse做登陆界面,连接MySQL 8.0,测试过连接数据库应该是成功的,可能是struts配置有问题,新手不知道问题出在哪里,请帮忙看一下代码,我标注几个我可能出问题又不知道怎么改的地方
//login.jsp
//此处可能是表单中form的action属性有问题?

<%@ page contentType="text/html; charset=gb2312" language="java"%>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<head>
<title>图书馆管理系统</title>
<link href="CSS/style.css" rel="stylesheet">

<script language="javascript">
function check(form){
    if (form.name.value==""){
        alert("请输入用户名称");form.name.focus();return false;
    }
    if (form.pwd.value==""){
        alert("请输入密码");form.pwd.focus();return false;
    }   
}
</script>
</head>
<body>

<table width="1000" border="0" align="center" cellpadding="0" cellspacing="0" class="tableBorder">

  <tr>
    <td width="1000" height="545" align="center" background="Images/login.png">
      <table width="1000" height="345" aligh="center" ></table>

      <form name="form1" method="post" action="manager.do?action=login">

       <table width="400" height="200" align="left">
        <tr>
            <td height="37" style="width: 128px; "></td>
            <td height="37" width="50"> 用户名</td>
            <td height="37" width="150">
                <input name="name" type="text" class="logininput" id="name" size="27"> 
            </td>
        </tr>
        <tr>
            <td height="37" style="width: 128px; "></td>
            <td height="37" width="50"> 密码  </td>
            <td height="37" width="150">
                <input name="pwd" type="text" class="logininput" id="pwd" size="27"> 
            </td>
        </tr>
        <tr>
            <td height="37" style="width: 128px; "></td>
            <td height="37" width="50"></td>
            <td height="37" width="200"> 
                <input name="Submit" type="submit" class="btn_grey" value="确定" onClick="return check(form1)">
             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input name="Submit3" type="reset" class="btn_grey" value="重置">
             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                <input name="Submit2" type="button" class="btn_grey" value="关闭" onClick="window.close();">
             </td>
        </tr>
       </table> 
      </form>
    </td>
  <tr>
    <td align="center" height="50" bgcolor="#3A3A3A" class="word_login">CopyRight &copy;  2019版权所有 xx图书馆<br>
    </td>
  </tr>

</table>

</body>
</html>

//Manager.java

package com.action;

import org.apache.struts.action.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.actionForm.ManagerForm;
import com.dao.ManagerDAO;
import javax.servlet.http.HttpSession;

public class Manager extends Action {
    private ManagerDAO managerDAO = null;

    public Manager() {
        this.managerDAO = new ManagerDAO();
    }

    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        String action = request.getParameter("action");
    //  System.out.println("获取的查询字符串:" + action);
        if (action == null || "".equals(action)) {
            return mapping.findForward("error");
        } else if ("login".equals(action)) {
            return managerLogin(mapping, form, request, response);
        } 
        request.setAttribute("error", "操作失败!");
        return mapping.findForward("error");
    }

    // 管理员身份验证

    public ActionForward managerLogin(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        ManagerForm managerForm = (ManagerForm) form;  //将接收到的表单信息强制转换成ActionForm类型
        managerForm.setAd_name(managerForm.getAd_name());
        managerForm.setAd_pwd(managerForm.getAd_pwd());
        int ret = managerDAO.checkManager(managerForm);
        System.out.print("验证结果ret的值:" + ret);
        if (ret == 1) {
            //将登录到系统的管理员名称保存到session
            HttpSession session = request.getSession();
            session.setAttribute("manager", managerForm.getAd_name());
            return mapping.findForward("managerLoginok");
        } else {
            request.setAttribute("error", "您输入的管理员名称或密码错误!");
            return mapping.findForward("error");
        }
    }
}

//ManagerForm

package com.actionForm;

import org.apache.struts.action.ActionForm;

public class ManagerForm extends ActionForm {
    private int ad_id;
    private String ad_name;
    private String ad_pwd; 
    public ManagerForm() {
    }

    public int getAd_id() {
        return ad_id;
    }
    public void setAd_id(int ad_id) {
        this.ad_id=ad_id;
    }
    public String getAd_name() {
        return ad_name;
    }
    public void setAd_name(String ad_name) {
        this.ad_name=ad_name;
    }
    public String getAd_pwd() {
        return ad_pwd;
    }
    public void setAd_pwd(String ad_pwd) {
        this.ad_pwd=ad_pwd;
    }
}

//ManagerDAO

package com.dao;

import com.core.ChStr;
import com.core.ConnDB;
import java.util.*;
import com.actionForm.ManagerForm;
import java.sql.*;

public class ManagerDAO {
    private ConnDB conn = new ConnDB();

  //管理员身份验证
    public int checkManager(ManagerForm managerForm) {
        int flag = 0;
        ChStr chStr=new ChStr();
        String sql = "SELECT * FROM Ad_info where ad_name='" +
        chStr.filterStr(managerForm.getAd_name()) + "'";
        ResultSet rs = conn.executeQuery(sql);
        try {
            if (rs.next()) {
                String pwd = chStr.filterStr(managerForm.getAd_pwd());      //获取输入的密码并过滤输入字符串中的危险字符
                if (pwd.equals(rs.getString(3))) {
                    flag = 1;
                } else {
                    flag = 0;
                }
            }else{
                flag = 0;
            }
        } catch (SQLException ex) {
            flag = 0;
        }finally{
            conn.close();
        }
        return flag;
    }
}

//ConnDB

package com.core;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class ConnDB {
    public Connection conn=null;
    public Statement stmt=null;
    public ResultSet rs=null;
    private static String propFileName="/com/connDB.properties";
    private static Properties prop=new Properties();
    private static String dbClassName="com.mysql.cj.jdbc.Driver";
    private static String dbUrl="jdbc:mysql://223.80.110.29:3306/sys_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL";
    private static String dbUserName="root";
    private static String dbPassword="";

    //加载资源文件
    public ConnDB()
    {
        try {
            InputStream in=getClass().getResourceAsStream(propFileName);
            prop.load(in);
            dbClassName=prop.getProperty("DB_CLASS_NAME","com.mysql.cj.jdbc.Driver");
            dbUrl=prop.getProperty("DB_URL","jdbc:mysql://localhost:3306/db_librarysys?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL");
            dbUserName=prop.getProperty("DB_USERNAME");
            dbPassword=prop.getProperty("DB_PASSWORD");
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }

    public static Connection getConnection() {
        Connection conn=null;
        try {
            //加载数据库驱动
            Class.forName(dbClassName);
            conn=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);  
        }
        catch(Exception ee) {
            ee.printStackTrace();
        }
        if(conn==null) {
            System.err.println("警告:DbConnectionManager.getConnection()获得数据库链接失败.\r\n\r\n链接类型:"+dbClassName+"\r\n链接位置:"+dbUrl);
        }
        return conn;
    }
    //执行查询语句
    public ResultSet executeQuery(String sql) {
        try {
            conn=getConnection();
            stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
            /*ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表
             ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。
             */
            rs=stmt.executeQuery(sql);
        }
        catch(SQLException ex){
            System.err.println(ex.getMessage());
        }
        return rs;
    }
    //执行更新操作  添加修改删除数据
    public int executeUpdate(String sql) {
        int result=0;//更新的行数
        try {
            conn=getConnection();
            stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
            result=stmt.executeUpdate(sql);
        }catch(SQLException ex) {
            result=0;
        }
        return result;
    }
    public void close() {
        try {
            if(rs!=null) {
                rs.close();
            }
            if(stmt!=null) {
                stmt.close();
            }
            if(conn!=null) {
                conn.close();
            }
            }catch(Exception e) {
            e.printStackTrace(System.err);
            }
    }

}

//struts-config

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
  <form-beans>   
    <form-bean name="managerForm" type="com.actionForm.ManagerForm" />    
    <form-bean name="ParameterForm" type="com.actionForm.ParameterForm" />    
  </form-beans>

  <action-mappings type="org.apache.struts.action.ActionMapping">
    <action name="managerForm" path="/manager" scope="request" type="com.action.Manager" validate="true">
      <forward name="managerLoginok" path="/main.jsp" />
      <forward name="error" path="/error.jsp" />
    </action>

    <action name="ParameterForm" path="/parameter" scope="request" type="com.action.Parameter" validate="true">
      <forward name="error" path="/error.jsp" />
      <forward name="parametermodify" path="/parameter_ok.jsp?para=2" />
      <forward name="parametermodifyQuery" path="/parameter_modify.jsp" />
    </action>








  </action-mappings>
  <message-resources parameter="com.wgh.struts.ApplicationResources" />
</struts-config>


  • 写回答

2条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug