10.Struts2连接数据库

链接数据库的两种方式:

1.在Action中连接数据库

2.使用工具类连接数据库

1.在Action中连接数据库

源码文档目录如图所示:



1.建立数据库

数据库建立语句:

create database aynu;
use aynu;
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `person`
-- ----------------------------
DROP TABLE IF EXISTS `person`;
CREATE TABLE `person` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `gender` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `city` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of person
-- ----------------------------

2.加载struts2核心jar包和数据库驱动包

struts2核心jar包,加载方法略。

xwork-core-2.1.6.jar: Structs2框架的核心类库
struts2-core-2.1.8.1.jar: XWork类库,Structs2在其上构建
ognl-2.7.3.jar:对象图导航语言(Object Graph Navigation Language),Structs2框架通过其读写对象属性。
freemarker-2.3.15.jar:   Structs2的UI标签的模板使用FreeMarker编写
commons-logging-1.0.4.jar: ASF出品的日志包,Structs2框架使用这个日志包来支持Log4J和JDK1.4+的日志记录。
commons-fileupload-1.2.1.jar: 文件上传组件,2.1.6版本后必须加入此文件。

数据库驱动包:

mysql-connector-java-3.1.12-bin.jar

3.index.jsp源码如下:

<%@ page pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
        <title>register page</title>
  </head>  <body>
              <form action="register.action" method="post">
              姓名:<input type="text" name="name"/><br/>
              性别:<input type="radio" name="gender" value="male" checked="checked"/>男
                   <input type="radio" name="gender" value="female"/>女<br/>
              年龄:<input type="text" name="age"/><br/>
              城市:<input type="text" name="city"/><br/>
              <input type="submit" value="注册"/>
              </form>
  </body>
</html>

4.show.jsp源码如下:

<%@ page pageEncoding="utf-8"%>
<html>
  <head>
    <title>show page</title>
  </head>
  <body>
  插入完成!
  </body>
</html>

5.RegisterAction.java源码如下:

package cn.edu.aynu.Stu_con_DataSql.actions;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class RegisterAction {
    private String name;
    private String gender;
    private int age;
    private String city;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }

    public String execute(){
        //将数据插入到数据库

        //1.加载数据库驱动
        try {
            String driverName="com.mysql.jdbc.Driver";
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        Connection con=null;
        PreparedStatement ps=null;
        try {

            //2.数据库链接
            String url="jdbc:mysql://127.0.0.1:3306/aynu";
            String user="root";
            String password="toor";
            con=DriverManager.getConnection(url,user,password);//这里选择import java.sql.Connection;

            //插入SQL语句
            String sql="insert into person(name,gender,age,city)values(?,?,?,?)";
            ps=con.prepareStatement(sql);

            //插入数据
            ps.setString(1, name);
            ps.setString(2, gender);
            ps.setInt(3, age);
            ps.setString(4,city);
            //执行SQL语句插入命令
            ps.executeUpdate();    

        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            try {
                ps.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return "success";
    }
}

6.web.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

        <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>

        <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
        </filter-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

7.struts.xml配置如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="one" extends="struts-default">

        <action name="register" class="cn.edu.aynu.Stu_con_DataSql.actions.RegisterAction">
            <result>/show.jsp</result>
        </action>

    </package>

</struts>

8.部署发布,启动tomcat,地址输入:

http://127.0.0.1:8080/Stu_con_DataSql/

程序截图如下:





数据插入数据库成功!



2.使用工具类连接数据库

只需要修改上面的RegisterAction.java和新增加一个工具类JdbcUtil.java即可。

RegisterAction.java源码如下:

package cn.edu.aynu.Stu_con_DataSql.actions;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import cn.edu.aynu.Stu_con_DataSql.utils.JdbcUtil;

public class RegisterAction {
    private String name;
    private String gender;
    private int age;
    private String city;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }

    public String execute(){
        //将数据插入到数据库

        //1.加载数据库驱动
        Connection con=JdbcUtil.getConnection();
        PreparedStatement ps=null;
        try {

            //插入SQL语句
            String sql="insert into person(name,gender,age,city)values(?,?,?,?)";
            ps=con.prepareStatement(sql);

            //插入数据
            ps.setString(1, name);
            ps.setString(2, gender);
            ps.setInt(3, age);
            ps.setString(4,city);
            //执行SQL语句插入命令
            ps.executeUpdate();    

        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            try {
                ps.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return "success";
    }
}

JdbcUtil.java源码如下:

package cn.edu.aynu.Stu_con_DataSql.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

//数据库工具类
public class JdbcUtil {

    //这里引用import java.sql.Connection;
    private static Connection con;

    //1.加载数据库驱动
    static{

        try {
            String driverName="com.mysql.jdbc.Driver";
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

    //2.数据库链接
    public static Connection getConnection(){

        String url="jdbc:mysql://127.0.0.1:3306/aynu";
        String user="root";
        String password="toor";
        try {
            con=DriverManager.getConnection(url,user,password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }

    //3.数据库全部关闭
    public static void close(Connection con,Statement stmt,ResultSet rs){
    //引入java.sql.Satement包,import java.sql.ResultSet,import java.sql.Connection;
        try {
            if(con!=null)con.close();
            if(stmt!=null)stmt.close();
            if(rs!=null)rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        }
    //4.数据库选择关闭
    public static void close(Object obj){
        try {
            if(obj instanceof Connection &&obj!=null)((Connection)obj).close();
            if(obj instanceof Statement &&obj!=null)((Statement)obj).close();
            if(obj instanceof ResultSet &&obj!=null)((ResultSet)obj).close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

重新部署发布,启动tomcat,输入地址:

http://127.0.0.1:8080/Stu_con_DataSql/



时间: 2024-10-25 22:15:05

10.Struts2连接数据库的相关文章

Struts2 连接数据库总结

了解MVC模式 MVC 是一种使用MVC                         Model View Controller模型-视图-控制器设计创建Web 应用程序的模式[1]  大一时的笔记:现在写成博客,有些知识点看到想笑哈哈,给刚学的看看吧!         Model 模型 表示应用程序核心 比如数据库记录列表 View 视图 显示数据 数据库记录 Controller 控制器 处理输入 写入数据库记录 MVC    模式同时提供了对HTMLCSS 和JavaScript 的完

struts2学习(10)struts2国际化

一.国际化简介: 二.struts2国际化设置: struts.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dt

struts2学习整理

1.struts.xml文件中的<constantname="struts.devMode">中的value改为true,那么以后修改了struts.xml文件的话,它会自动地更新加载,不需要每次修改完都去重启服务器. 2.strurs2的核心控制器是一个Filter,而不是一个servlet,那么在web,xml文件中就需要配置FilterDispather,如 <filter><!–配置STRUTS2核心Filter的名字–><filter

Struts2请求数据自动封装和数据类型转换

方式1:jsp表单数据填充到action中的属性: 方式2:jsp表单数据填充到action的对象的属性: 方式1: 第一步:引包,省去 第二步:配置struts2的过滤器 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmln

[原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

struts2表单提单细节处理

1. 上传文件 struts2提供了封闭的上传文件的入口, 或者网络上存在大量的插件用于网页表单中上传文件. struts2对文件上传的格式,及上传文件的大小有很好的限制. <s:file cssClass="doc" name="documents[0].actionFile" /> 这样上传的文件会自动map到对象的属性上, 或者我们使用File []fileArray来预存表单提交到action的文件队列. 不过通过此方法上传的文件队列是没有文件类

Java面试-Struts2

1  Struts2工作原理 一个请求在Struts2框架中的处理大概分为下面几个步骤: 1.client初始化一个指向Servlet容器(比如Tomcat)的请求: 2.这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器.这个过滤器对于Struts2和其它框架的集成非常有帮助,比如:SiteMeshPlugin): 3.接着FilterDispatcher被调用.FilterDispatcher询问ActionMapper来决

Struts2学习一----------Struts2的工作原理及HelloWorld简单实现

? 版权声明:本文为博主原创文章,转载请注明出处 Struts2工作原理 一个请求在Struts2框架中的处理步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2.这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的继承很有帮助,例如SiteMesh Plugin) 3.接着FilterDispatcher被调用,FilterDispatcher询问Action

Struts2 笔记(2) --Struts传值/跳转/拦截器/注解等

1.action中如何接受页面传过来的参数 第一种情况:(同名参数) 例如: 通过页面要把id=1 name=tom age=20这三个参数传给action 1.action里面定义三个成员变量id name age,这个三个变量的名字一定要和所传变量的名字一致. 2.提供get/set方法 3.将来页面把这三个参数传过来的时候,struts2框架会自动的帮我们把这个三个参数值放action中的三个属性里面.(同时还做了类型的转换) 注意:这个工作其实是由defaultStack这个拦截器栈里面