利用ajax获取网页表单数据,并存储到数据库之二(使用SSH)

时间:2023-01-30 23:00:58

上篇介绍了如何使用JDBC链接ORACLE数据库实现对数据库的增删改查,本例是使用框架SSH来对数据库的数据进行操作。

首先说框架,现在流行的框架很多,如Struts、Hibernate、Spring等,再加上各个公司自己编写的框架,可以说有很多。使用框架是为了使java语言更加规范化,或者说按照它既定的要求一步一步来建立工程,这使得程序更加简单。

利用ajax获取网页表单数据,并存储到数据库之二(使用SSH)

    图1-工程结构图

创建工程的过程已经不需要再细说了,由于使用框架就必须引入相应的jar包,这里导入spring,struts,hibernate的各种核心包。

由于这个例子与上一个例子实现的功能仙童,所以建表的过程就不再叙述了,建表完成以后首先创建两个model,这里一个是Price,另一个是User。这两个表中有各个表中的数据字段。

public class User {
private String user_id;
private String user_name;
private String user_email;
private String user_subject;
private String user_message;
//自动生成get,set方法和无参有参构造方法
}
public class Price {

    private String price_id;
private String price_name;
private String price_price;
private String price_list1;
private String price_list2;
private String price_list3;
private String price_list4;
private String price_list5;
//同样生成get,set方法与构造函数
}

两个javaBean建立以后就要建立相应的配置文件,也即建立User.hbm.xml与Price.HBM.xml两个配置文件。这主要是使用了hibernate的使用方法。在这两个配置文件中主要是对两个类中的数据字段进行配置,<hibernate-mapping>中包括其name,type等信息。不用多说,相信对大家来说so easy。

说到配置文件,再说一下这个dbConfig.properties文件,这个文件是对数据库进行配置,包括数据库的名字,用户名,密码等。

driver=oracle.jdbc.driver.OracleDriver
url=jdbc\:oracle\:thin\:@localhost\:1521\:ORACLE
userName=user2
password=12345

strut.properties文件是固定的基本不用改变。为了能够看懂我简单的注释了一些。

#是否为struts的开发模式
struts.devMode=true
#用URL扩展名来确定是否这个请求是被用作Struts action,其实也就是设置 action的后缀,例如login.do的'do'字。
struts.action.extension=action
#是否加载xml配置(true,false)
struts.configuration.xml.reload=true
#国际化信息内码
struts.i18n.encoding = utf-8
#com.opensymphony.xwork2.ObjectFactory接口(spring)
struts.objectFactory = spring
### valid values are: name, type, auto, and constructor (name is the default)
struts.objectFactory.spring.autoWire = name
#是否可以用替代的语法替代tags
struts.tag.altSyntax=true
# 不让标签自动生成html代码(没有用的,不可控的)
struts.ui.theme = simple

配置完成以后建立两个action,这两个action就是对数据库进行操作,这里PriceAction中定义了一个查询的方法,对数据库的数据进行查询并显示到html页面上。

package com.action;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import net.sf.json.JSONArray;
import com.model.Price;
import com.opensymphony.xwork2.ActionSupport;
import com.service.PriceService; public class PriceAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private PriceService priceService;
private List<Price> list;
private Price price; public void queryPrice() throws IOException {
list = priceService.queryPrice();
JSONArray jsonArray = JSONArray.fromObject(list);
System.out.println(jsonArray);
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/plain;charset=utf-8");
PrintWriter out=response.getWriter();
out.write(jsonArray.toString());
out.flush();
out.close();
} public PriceService getPriceService() {
return priceService;
} public void setPriceService(PriceService priceService) {
this.priceService = priceService;
} public List<Price> getList() {
return list;
} public void setList(List<Price> list) {
this.list = list;
} public Price getPrice() {
return price;
} public void setPrice(Price price) {
this.price = price;
}
}

这一部分的代码较长,但是总的来说就是一个queryPrice()方法。

package com.action;

import java.util.List;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.model.User;
import com.opensymphony.xwork2.ActionSupport;
import com.service.UserService; public class UserAction extends ActionSupport {
private UserService userService;
private List<User> list;
private User user =new User(); public UserService getUserService() {
return userService;
} public void setUserService(UserService userService) {
this.userService = userService;
} public List<User> getList() {
return list;
} public void setList(List<User> list) {
this.list = list;
} public User user() {
return user;
} public void setUser(User user) {
this.user = user;
} public void add() {
HttpServletRequest request = ServletActionContext.getRequest();
user.setUser_id(getUUID());
user.setUser_name(request.getParameter("user_name"));
user.setUser_email(request.getParameter("user_email"));
user.setUser_subject(request.getParameter("user_subject"));
user.setUser_message(request.getParameter("user_message"));
userService.addUser(user);
} public static String getUUID() {
return UUID.randomUUID().toString().replace("-", "");
}
}

UserAction代码也是一个add()方法,用于添加数据。

两个Service也是对简单服务的调用。

最主要的ajax与上一个案例一样,有想了解的请参考上一个用JDBC的案例。

SSH最重要的一系列的配置。

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:dbConfig.properties</value>
</list>
</property>
</bean> <bean id="dataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName">
<value>${driver}</value>
</property>
<property name="url">
<value>${url}</value>
</property>
<property name="username">
<value>${userName}</value>
</property>
<property name="password">
<value>${password}</value>
</property>
</bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 数据源 -->
<property name="dataSource">
<ref local="dataSource1"/>
</property>
<!-- hibernate实体类的配制文件 -->
<property name="mappingResources">
<list>
<value>com/model/Price.hbm.xml</value>
<value>com/model/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean> <bean id="dao" class="com.dao.Dao">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean> <!-- 定义事务管理 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 定义事务管理拦截器 -->
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="get*">readOnly</prop>
<prop key="query*">readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<!-- 定义代理自动管理事务 -->
<bean id="ProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<!-- 指定需要Spring管理事务的Bean -->
<property name="beanNames">
<list>
<value>priceService</value>
<value>userService</value>
</list>
</property>
<!-- 调用事务管理拦截器 -->
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean> <bean id="userAction" class="com.action.UserAction" singleton="false">
<property name="userService">
<ref local="userService"/>
</property>
</bean> <bean id="userService" class="com.service.UserService">
<property name="dao">
<ref local="dao"/>
</property>
</bean> <bean id="priceAction" class="com.action.PriceAction" singleton="false">
<property name="priceService">
<ref local="priceService"/>
</property>
</bean> <bean id="priceService" class="com.service.PriceService">
<property name="dao">
<ref local="dao"/>
</property>
</bean> </beans>

这段代码是applicationContext.xml,这其中配置了数据库,一系列的连接信息。还包括service与action,,和必要的事务管理拦截器等重要信息。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>SSHWeb_demo01</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- spring监听 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- spring集成hibernate3的过滤器 -->
<filter>
<filter-name>openSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>sessionFactory</param-value>
</init-param>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>openSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <!-- struts2过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

web.xml配置监听器与过滤器。

总的来说,使用JDBC与SSH的区别在于:框架使得程序的结构性更强。

利用ajax获取网页表单数据,并存储到数据库之二(使用SSH)的更多相关文章

  1. 利用ajax获取网页表单数据,并存储到数据库之一(使用JDBC)

    所谓JDBC就是利用java与数据库相连接的技术,从数据库获取既有的信息或者把网页上的信息存储到数据库. 这里简单的介绍公司的一个小项目中的一部分,由于代码较多,所以用图片形式进行展示.源码请查看源码 ...

  2. 3&period;&period;jquery的ajax获取form表单数据

    jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用:<script src="jquery-1.11.1.mi ...

  3. html基础:jquery的ajax获取form表单数据

    jq是对dom进行的再次封装.是一个js库,极大简化了js使用 jquery库在js文件中,包含了所有jquery函数,引用:<script src="jquery-1.11.1.mi ...

  4. 用Tchromium替代webbrowser提交网页表单有关问题

    用Tchromium替代webbrowser提交网页表单有关问题   提交表单时,使用js脚本,然后用 chrm.browser.Frame['ff'].ExecuteJavaScript 提交就可以 ...

  5. 使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json&lowbar;encode的数据到前台&comma;文本内容上边的html标签不解析

    使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析 因为我在前台使用了jquery的text()方法,而不是html ...

  6. VC提交网页表单(一共八篇)

    VC提交网页表单-自动评论留言(1)http://blog.csdn.net/wangningyu/article/details/4526357VC提交网页表单-自动评论留言(2)http://bl ...

  7. Ajax获取 Json文件提取数据

    摘自 Ajax获取 Json文件提取数据 1. json文件内容(item.json) [ { "name":"张国立", "sex":&q ...

  8. C&num;利用WMI获取 远程计算机硬盘数据

    一.利用WMI获取 远程计算机硬盘数据,先引入"System.Management.dll"文件. /// <summary>        /// 获取存储服务器硬盘 ...

  9. JS获取form表单数据

    以下代码可放在一个js文件中,以便通用: //获取指定表单中指定标签对象 function getElements(formId, label) { var form = document.getEl ...

随机推荐

  1. PHPExcel读取Excel文件的实现代码

    <?php require_once 'PHPExcel.php'; /**对excel里的日期进行格式转化*/ function GetData($val){ $jd = GregorianT ...

  2. Python WMI获取Windows系统信息 监控系统

    #!/usr/bin/env python # -*- coding: utf-8 -*- #http://www.cnblogs.com/liu-ke/ import wmi import os i ...

  3. iis7配置网站容易出现的问题(转)

    来源: http://www.cnblogs.com/5426z/articles/4865022.html 1.64位操作系统 access数据库提示:未在本地计算机上注册"Microso ...

  4. Java中获取完整的url

    Java中获得完整的URl字符串 HttpServletRequest httpRequest=(HttpServletRequest)request; String strBackUrl = &qu ...

  5. 实例详解 EJB 中的六大事务传播属性--转

    前言 事务 (Transaction) 是访问并可能更新数据库中各种数据项的一个程序执行单元 (unit).在关系数据库中,一个事务可以是一条或一组 SQL 语句,甚至整个程序.它有通常被称为 ACI ...

  6. 内核对象kobject和sysfs(2)——kref分析

    内核对象kobject和sysfs(2)--kref分析 在介绍ref之前,先贴上kref的结构: struct kref { atomic_t refcount; }; 可以看到,kref只是包含一 ...

  7. 5&period; VIM 系列 - 文件管理

    目录 目录树 文件检索 ctrlp.vim fzf.vim 目录树 安装 nerdtree.vim 插件 Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeTo ...

  8. JVM、垃圾收集器

    1.Java虚拟机原理 所谓虚拟机,就是一台虚拟的机器.他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机, 大名鼎鼎的Vmare就属于系统虚拟机,他完全是对物理计算 ...

  9. Python计算器实操

    要求: 开发一个简单的python计算器 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * ...

  10. net core体系-web应用程序-2项目简单案例

    阅读目录   NO1 留言板(mysql的使用) NO2 聊天室(WebSocket的使用) NO3 找工作(AngleSharp的使用) 部署多个站点 一些其它的细节 部署阿里云 mysql的客户端 ...