@Ablechen
2019-07-21T07:21:33.000000Z
字数 6209
阅读 493
通过进行对数据库的操作,借助表格来实现信息的显示,重点体会框架的作用
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;}@Overridepublic 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调用处理过程,然后返回字符串,通过字符串结果的不同,然后对应的显示页面也不相同