链接数据库的两种方式:

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. 使用Dotfuscator 进行.Net代码混淆 代码加密的方法

    混淆代码能在一定程度上放置代码被盗用,保护我们的知识产权 1.打开vs2012,选择工具-〉Dotfuscator Software Services 2.选择你需要混淆的DLL 文件,可以多选择 3 ...

  2. LINUX 下时间转换为秒数

    linux下时间是从1970.1.1开始算的秒数 //转来自网址 http://blog.csdn.net/wind19/article/details/6579495 $ dateTue Feb 3 ...

  3. SQL Server 2008, 2008 R2, 2012 and 2014 完全支持TLS1.2加密传输

    SQL Server 2008, 2008 R2, 2012 and 2014 完全支持TLS1.2加密传输 微软高兴地宣布所有主流SQL Server客户端驱动和SQL Server发行版已经支持T ...

  4. 解读ASP.NET 5 & MVC6系列

    本系列的大部分内容来自于微软源码的阅读和网络,大部分测试代码都是基于VS RC版本进行测试的. 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介 解读ASP.NET 5 ...

  5. Linux堆内存管理深入分析(上)

    Linux堆内存管理深入分析(上半部) 作者:走位@阿里聚安全   0 前言 近年来,漏洞挖掘越来越火,各种漏洞挖掘.利用的分析文章层出不穷.从大方向来看,主要有基于栈溢出的漏洞利用和基于堆溢出的漏洞 ...

  6. AngularJS基础入门初探

    一.AngularJS简介 1.1 什么是AngularJS (1)一款非常优秀的前端JS框架,可以方便实现MVC/MVVM模式 (2)由Misko Hevery 等人创建,2009年被Google所 ...

  7. 探索c#之不可变数据类型

    阅读目录: 不可变对象 自定义不可变集合 Net提供的不可变集合 不可变优点 不可变对象缺点 不可变对象 不可变(immutable): 即对象一旦被创建初始化后,它们的值就不能被改变,之后的每次改变 ...

  8. 表格搞定 Asp.net Web 状态管理

    最近在网上搜罗了 ASP.NET WEB 状态管理方面的一些内容,终于把这些内容整合总结了一下. 1. 希望自己通过整理,能够掌握一些,为自己投资. 2. 以便自己忘记,又要浪费时间搜罗. 3. 希望 ...

  9. 【VC++技术杂谈006】截取电脑桌面并将其保存为bmp图片

    本文主要介绍如何截取电脑桌面并将其保存为bmp图片. 1. Bmp图像文件组成 Bmp是Windows操作系统中的标准图像文件格式. Bmp图像文件由四部分组成: (1)位图头文件数据结构,包含Bmp ...

  10. 应用Web.Config配置网站

    1.配置数据库连接 在ASP.NET中配置数据库连接的两种方式: appSettings和connectionStrings 命名空间: using System.Configuration; 1)a ...