eclipse学习(第二章:初识ssh)——10.Struts2数据库访问
前言
我是从这里学习的https://www.w3cschool.cn/struts_2/struts_database_access.html
创建项目
1、初始化项目以及jar包拉取以及初始化数据库(创建一个struts_test的数据库,创建一个login表,内容如下)
数据库连接主要靠mysql-connector-java-x.y.z
2、创建一个LoginAction
进行登录业务处理,这里如果出现了异常,其实可以通过去掉异常抓取进行测试。数据库连接的url需要带参数,不然会导致连接出现问题,时区很重要,不然可能得到不正确的时间。
package com.czx.database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
@Override
public String execute() throws Exception {
//设置标志位,默认为失败,如果成功在进行改动
String ret = "error";
//初始化连接,主要是为了确定连接是否能被打开,进行关流操作
Connection con = null;
try {
//数据库连接url的确定
String url = "jdbc:mysql://localhost:3306/struts_test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai";
//加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//获取连接
con = DriverManager.getConnection(url, "root", "root");
//创建sql语句
String sql = "select name from login where user=? AND password=?";
//动态执行sql
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, user);
ps.setString(2, password);
//返回执行结果
ResultSet rs =ps.executeQuery();
//遍历结果集
while(rs.next()) {
name = rs.getString(1);
ret = "success";
}
}catch(Exception e) {
//如果出现异常照样弄成错误
//ret = "error";
}finally {
if(con != null) {
con.close();
}
}
return ret;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//用户名
private String user;
//密码
private String password;
//返回的内容
private String name;
}
3、创建struts.xml
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<package name="databaseConnection" extends="struts-default">
<action name="connect" class="com.czx.database.LoginAction" method="execute">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
4、创建一些页面
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<form action="connect" method="post">
用户名:<br/>
<input type="text" name="user"/><br/>
密码:<br/>
<input type="password" name="password"/><br/>
<input type="submit" value="登录"/>
</form>
</body>
</html>
success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
成功登录后结果<s:property value="name"/>
</body>
</html>
error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>错误页面</title>
</head>
<body>
登录失败,请检查你的账号密码啥的?
</body>
</html>
测试
访问http://localhost:8080/ssh_learn_database/
输入用户名“test”和密码“test”,之后登录,结果如下:
可能会出现的异常
如果出现了异常,你必须要去掉异常抓取,不然异常你无法通过网页直接可见。基本上就是连接的url的参数或者是自己写的sql语句有问题,再或者就是相关依赖jar包导错。
项目地址
这个仓库里面的ssh_learn_database
https://gitee.com/mrchen13427566118/ssh_learn.git
如果不会怎么弄到eclipse的话,就看这里
https://blog.csdn.net/weixin_43987277/article/details/116936221