链接数据库的两种方式:

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/


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

  1. struts2学习(10)struts2国际化

    一.国际化简介: 二.struts2国际化设置: struts.xml: <?xml version="1.0" encoding="UTF-8" ?&g ...

  2. 10.Struts2值栈

    1.什么是值栈 * 值栈就相当于Struts2框架的数据的中转站,向值栈存入一些数据.从值栈中获取到数据. * ValueStack 是 struts2 提供一个接口,实现类 OgnlValueSta ...

  3. SSH面试题(struts2+Spring+hibernate)

    struts2 + Spring +hibernate Hibernate工作原理及为什么要用?   原理:   1.读取并解析配置文件   2.读取并解析映射信息,创建SessionFactory ...

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

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

  5. 对struts2一些理解

    1.strust2框架是什么?为解决什么问题出现? Struts2是在WebWork+xwork基础发展而来的. 2. strust2的优缺点优点: 支持Ajax 支持Ognl标签 提供了强大的拦截器 ...

  6. Struts2知识点小结汇总

    Struts2部分 1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层).业务逻辑层.数据持久层.[其中WEB层会使用前 ...

  7. Struts2 看1

    Struts2部分 1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层).业务逻辑层.数据持久层.[其中WEB层会使用前 ...

  8. 面试题: Struts2

    1. Struts2与Struts1的联系与区别是什么?为什么要用Struts2? 答案: struts1与struts2都是mvc框架的经典实现模式. Struts2不是从Struts1升级而来,而 ...

  9. Struts2学习二----------访问Servlet API

    © 版权声明:本文为博主原创文章,转载请注明出处 Struts2提供了三种方式去访问Servlet API -ActionContext -实现*Aware接口 -ServletActionConte ...

随机推荐

  1. Vuforia结合Skyshop: Image-Based Lighting Tools & Shaders插件实现真实的光照效果

    Skyshop: Image-Based Lighting Tools & Shaders 插件地址:https://www.assetstore.unity3d.com/en/#!/cont ...

  2. 利用GeoIP数据库及API进行地理定位查询

    GeoIP数据库下载地址:http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz. 首先,在Max ...

  3. 最后一周psp

    团队项目PSP 一:表格     C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 讨论 讨论用户界面 10:20 11:45 25 40 80 分析 ...

  4. Oracle EBS - Doc

    Oracle EBS spec.: http://vianet/IT/IT%20Dept/IT%20Project%20Update2/Active%20Projects%20%20Manufactu ...

  5. js面向对象基础总结

     js中如何定义一个类? 定义的function就是一个构造方法也就是说是定义了一个类:用这个方法可以new新对象出来. function Person(name, age){ this.name = ...

  6. Unity学习疑问记录之向量基础

    这里写得非常好了: http://blog.gamerisker.com/archives/347.html

  7. 领域驱动设计(DDD)部分核心概念的个人理解

    领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...

  8. MySQL 复制表结构

    200 ? "200px" : this.width)!important;} --> 介绍 有时候我们需要原封不动的复制一张表的表结构来生成一张新表,MYSQL提供了两种便 ...

  9. JS实战 ·  收缩菜单表单布局

     获取节点的两种方式:     1.通过event对象的srcElement属性:     2.通过事件源对象用this传入.     代码如下: <html> <head> ...

  10. web应用中使用JavaMail发送邮件

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...