使用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)">
<input name="Submit3" type="reset" class="btn_grey" value="重置">
<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 © 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>