[关闭]
@Ablechen 2019-07-21T07:21:33.000000Z 字数 6209 阅读 448

关于struts2框架的应用


应用的作用

通过进行对数据库的操作,借助表格来实现信息的显示,重点体会框架的作用

web应用actionbeandbpo

bean,需要使用的bean,便于对数据的操作
action对数据进行逻辑操作,并且返回数据,给指定的视图
po处理对于JDBC和SQL的操作
db关于对数据库连接的操作

  1. login.jsp
  2. <%@ page language="java" contentType="text/html; charset=UTF-8"
  3. pageEncoding="UTF-8"%>
  4. <%@ taglib uri="/struts-tags" prefix="s"%>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta charset="UTF-8">
  9. <title>登录页面</title>
  10. </head>
  11. <body>
  12. <s:form method="post" action="usrLoginAction" align="center">
  13. <s:textfield name="userName" label="用户名"></s:textfield>
  14. <s:password name="password" label="密码"></s:password>
  15. <s:submit value="登录"></s:submit>
  16. </s:form>
  17. </body>
  18. </html>

这里使用了struts2的标签
对于文本的输入框使用的是:标签
对于密码的输入使用的是:
这里将数据提交到usrLoginAction中,这里需要注意的是在进行表格提交的时候,具有getter和setter的属性会自动被注入

  1. package action;
  2. import com.opensymphony.xwork2.ActionContext;
  3. import com.opensymphony.xwork2.ActionSupport;
  4. import bean.Usr;
  5. import po.UsrDAO;
  6. public class UsrLoginAction extends ActionSupport{
  7. /**
  8. * 具有自动注入功能
  9. */
  10. private String userName ;
  11. private String password ;
  12. public String getUserName() {
  13. return userName;
  14. }
  15. public void setUserName(String userName) {
  16. this.userName = userName;
  17. }
  18. public String getPassword() {
  19. return password;
  20. }
  21. public void setPassword(String password) {
  22. this.password = password;
  23. }
  24. @Override
  25. public String execute() throws Exception {
  26. UsrDAO dao = new UsrDAO() ;
  27. System.out.println(userName);
  28. System.out.println(password);
  29. Usr u = dao.checkUsr(userName, password);
  30. if(u==null) {//登录失败
  31. return "anli_error";
  32. }else {//登录成功
  33. ActionContext.getContext().getSession().put("usr", u);
  34. String superUser = u.getSuperUser();
  35. if(superUser.equals("1")) {//普通注册用户
  36. return "anli_success_1";
  37. }else if(superUser.equals("2")) {
  38. return "anli_success_2";
  39. }else {
  40. return "anli_success_3";
  41. }
  42. }
  43. }
  44. }

usrLoginAction的主要作用是进行用户登录信息的检查,这里进行的工作主要就是进行资源使用的调配,然后根据结果的不同返回不同的视图。

  1. package po;
  2. import java.sql.Connection;
  3. import java.sql.PreparedStatement;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import bean.Usr;
  9. import db.DBConn;
  10. public class UsrDAO {
  11. /**
  12. * 该类是用户数据的访问类 是案例的模拟类 使用jdbc直接实现功能
  13. */
  14. private Connection con;
  15. private PreparedStatement ps;
  16. private ResultSet rs;
  17. /**
  18. * 根据用户名 密码查询用户 登录方法
  19. */
  20. public Usr checkUsr(String userName, String password) {
  21. Usr u = null ;
  22. String sql = "SELECT * FROM usr WHERE userName = ? and password = ? and delsoft = 0" ;
  23. try {
  24. con = DBConn.getConn() ;
  25. ps = con.prepareStatement(sql);
  26. ps.setString(1, userName);
  27. ps.setString(2, password);
  28. rs = ps.executeQuery() ;
  29. if(rs.next()) {
  30. u = new Usr();
  31. u.setId(rs.getInt("id"));
  32. u.setUserName(rs.getString("userName"));
  33. u.setEmail(rs.getString("email"));
  34. u.setTel(rs.getString("tel"));
  35. u.setSuperUser("superUser");
  36. }
  37. }catch(SQLException e) {
  38. e.printStackTrace();
  39. }finally {
  40. DBConn.dbClose(con, ps, rs);
  41. }
  42. return u ;
  43. }
  44. /**
  45. * 返回所有的用户信息
  46. * @return
  47. */
  48. public List<Usr> findAllUsr(){
  49. List<Usr> list = new ArrayList<Usr>() ;
  50. Usr u = null ;
  51. String sql = "select * from usr";
  52. try {
  53. con = DBConn.getConn();
  54. ps = con.prepareStatement(sql);
  55. rs = ps.executeQuery();
  56. while(rs.next()) {
  57. u = new Usr();
  58. u.setId(rs.getInt("id"));
  59. u.setUserName(rs.getString("userName"));
  60. u.setEmail(rs.getString("email"));
  61. u.setTel(rs.getString("tel"));
  62. u.setSuperUser(rs.getString("superUser"));
  63. list.add(u);
  64. }
  65. }catch(SQLException e) {
  66. e.printStackTrace();
  67. }finally {
  68. DBConn.dbClose(con, ps, rs);
  69. }
  70. return list ;
  71. }
  72. }

在DAO中实现对于数据库功能操作的具体实现,在action方法中只是对于这些功能的调用

  1. package db;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.SQLException;
  6. import java.sql.Statement;
  7. public class DBConn {
  8. /**
  9. * 获得关于数据库的连接
  10. * @return
  11. */
  12. public static Connection getConn() {
  13. Connection con = null ;
  14. //加载数据库驱动
  15. try {
  16. Class.forName("com.mysql.jdbc.Driver");
  17. String url = "jdbc:mysql://localhost:3306/acesys";
  18. String user = "root" ;
  19. String password = "chenhaojie123";
  20. con = DriverManager.getConnection(url, user, password);
  21. }catch(ClassNotFoundException e) {
  22. System.out.println("====驱动加载失败====");
  23. }catch(SQLException e) {
  24. System.out.println("====获得数据库连接失败====");
  25. }
  26. return con ;
  27. }
  28. /**
  29. * 关闭操作方法
  30. */
  31. public static void dbClose(Connection con, Statement st, ResultSet rs) {
  32. try {
  33. if(rs!=null) {
  34. rs.close();
  35. rs = null ;
  36. }
  37. if(st!=null) {
  38. st.close();
  39. st = null ;
  40. }
  41. if(con!=null) {
  42. con.close();
  43. con = null ;
  44. }
  45. }catch(Exception e) {
  46. e.printStackTrace();
  47. }
  48. }
  49. }

使用db包中的类完成对数据库的连接和关闭操作
对于数据库的连接操作有以下步骤

  1. 加载驱动
  1. Class.forName("com.mysql.jdbc.Driver")
  1. 用户信息
  1. String url = "jdbc:mysql://localhost:3306/acesys"
  2. String user = "root"
  3. String password = "chenhaojie123"
  1. 获得与数据库的连接
  1. con = DriverManager.getConnection(url, user, password)
通过返回字符串index.jsp*.action数据处理数据库的连接数据操作jdbcSQLjsp页面显示

核心是action的调度作用,通过action调用处理过程,然后返回字符串,通过字符串结果的不同,然后对应的显示页面也不相同

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注