@Ablechen
2019-07-21T07:21:33.000000Z
字数 6209
阅读 448
通过进行对数据库的操作,借助表格来实现信息的显示,重点体会框架的作用
bean,需要使用的bean,便于对数据的操作
action对数据进行逻辑操作,并且返回数据,给指定的视图
po处理对于JDBC和SQL的操作
db关于对数据库连接的操作
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<s:form method="post" action="usrLoginAction" align="center">
<s:textfield name="userName" label="用户名"></s:textfield>
<s:password name="password" label="密码"></s:password>
<s:submit value="登录"></s:submit>
</s:form>
</body>
</html>
这里使用了struts2的标签
对于文本的输入框使用的是:标签
对于密码的输入使用的是:
这里将数据提交到usrLoginAction中,这里需要注意的是在进行表格提交的时候,具有getter和setter的属性会自动被注入
package action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import bean.Usr;
import po.UsrDAO;
public class UsrLoginAction extends ActionSupport{
/**
* 具有自动注入功能
*/
private String userName ;
private String password ;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String execute() throws Exception {
UsrDAO dao = new UsrDAO() ;
System.out.println(userName);
System.out.println(password);
Usr u = dao.checkUsr(userName, password);
if(u==null) {//登录失败
return "anli_error";
}else {//登录成功
ActionContext.getContext().getSession().put("usr", u);
String superUser = u.getSuperUser();
if(superUser.equals("1")) {//普通注册用户
return "anli_success_1";
}else if(superUser.equals("2")) {
return "anli_success_2";
}else {
return "anli_success_3";
}
}
}
}
usrLoginAction的主要作用是进行用户登录信息的检查,这里进行的工作主要就是进行资源使用的调配,然后根据结果的不同返回不同的视图。
package po;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import bean.Usr;
import db.DBConn;
public class UsrDAO {
/**
* 该类是用户数据的访问类 是案例的模拟类 使用jdbc直接实现功能
*/
private Connection con;
private PreparedStatement ps;
private ResultSet rs;
/**
* 根据用户名 密码查询用户 登录方法
*/
public Usr checkUsr(String userName, String password) {
Usr u = null ;
String sql = "SELECT * FROM usr WHERE userName = ? and password = ? and delsoft = 0" ;
try {
con = DBConn.getConn() ;
ps = con.prepareStatement(sql);
ps.setString(1, userName);
ps.setString(2, password);
rs = ps.executeQuery() ;
if(rs.next()) {
u = new Usr();
u.setId(rs.getInt("id"));
u.setUserName(rs.getString("userName"));
u.setEmail(rs.getString("email"));
u.setTel(rs.getString("tel"));
u.setSuperUser("superUser");
}
}catch(SQLException e) {
e.printStackTrace();
}finally {
DBConn.dbClose(con, ps, rs);
}
return u ;
}
/**
* 返回所有的用户信息
* @return
*/
public List<Usr> findAllUsr(){
List<Usr> list = new ArrayList<Usr>() ;
Usr u = null ;
String sql = "select * from usr";
try {
con = DBConn.getConn();
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
u = new Usr();
u.setId(rs.getInt("id"));
u.setUserName(rs.getString("userName"));
u.setEmail(rs.getString("email"));
u.setTel(rs.getString("tel"));
u.setSuperUser(rs.getString("superUser"));
list.add(u);
}
}catch(SQLException e) {
e.printStackTrace();
}finally {
DBConn.dbClose(con, ps, rs);
}
return list ;
}
}
在DAO中实现对于数据库功能操作的具体实现,在action方法中只是对于这些功能的调用
package db;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBConn {
/**
* 获得关于数据库的连接
* @return
*/
public static Connection getConn() {
Connection con = null ;
//加载数据库驱动
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/acesys";
String user = "root" ;
String password = "chenhaojie123";
con = DriverManager.getConnection(url, user, password);
}catch(ClassNotFoundException e) {
System.out.println("====驱动加载失败====");
}catch(SQLException e) {
System.out.println("====获得数据库连接失败====");
}
return con ;
}
/**
* 关闭操作方法
*/
public static void dbClose(Connection con, Statement st, ResultSet rs) {
try {
if(rs!=null) {
rs.close();
rs = null ;
}
if(st!=null) {
st.close();
st = null ;
}
if(con!=null) {
con.close();
con = null ;
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
使用db包中的类完成对数据库的连接和关闭操作
对于数据库的连接操作有以下步骤
Class.forName("com.mysql.jdbc.Driver")
String url = "jdbc:mysql://localhost:3306/acesys"
String user = "root"
String password = "chenhaojie123"
con = DriverManager.getConnection(url, user, password)
核心是action的调度作用,通过action调用处理过程,然后返回字符串,通过字符串结果的不同,然后对应的显示页面也不相同