采用DWR、maven保存数据到数据库
一、原理: Ajax是时下比较流行的一种web界面设计新思路,其核心思想是从浏览器获取XMLHttp对象与服务器端进行交互. DWR(Direct Web Remoting)就是实现了这种Ajax技术的一种web框架. 最近做的项目中我也将它用上了,感觉很是方便,比如动态生成javascript代码,隐藏的http协议,java代码和javascript交互的是javascript的对象(或字符串).
二、步骤:
1.导入DWR所需要的jar包,dwr.jar ,commons-loggong.jar(日志处理),pom.xml.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.com.liveuc.dwr</groupId>
<artifactId>dwr</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>dwr Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.bundles</groupId>
<artifactId>dwr</artifactId>
<version>3.0.M1_1</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>tomcat</groupId>
<artifactId>servlet</artifactId>
<version>4.1.36</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
<build>
<finalName>dwr</finalName>
</build>
</project>
2.在web.xml中配置dwr的拦截器
<!--配置dwr拦截器-->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<display-name>DWR Servlet</display-name>
<description>Direct Web Remoter Servlet</description>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<!--dwr调试-->
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowScriptTagRemoting</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>scriptCompressed</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
3.编写js要调用的Java类
/**
* js访问方法
* @author Administrator
*
*/
public class UserDaoADwr { UserDao userDao = new UserDao(); /**
* 保存用户
* @param user 保存对象
* @return 是否保存成功
*/
@SuppressWarnings("static-access")
public boolean saveUser(User user) {
return userDao.saveUser(user);
} /**
* 查询
* @param id 查询条件用户id
* @return 查询出的用户
*/
@SuppressWarnings("static-access")
public User findUserById(Integer id) {
return userDao.findUserById(id);
}
}
4.在WEB-INF下配置dwr配置文件dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd"> <dwr>
<allow>
<!-- 类自动转换为js -->
<create creator="new" javascript="UserDaoDwrjs" class="cn.com.liveuc.dwr.js.UserDaoADwr">
</create>
<!-- 表示Java和js转换 -->
<convert converter="bean" match="cn.com.liveuc.dwr.domain.User" /> <!--
<create creator="new" javascript="***js调用的class***" class="***java里暴露的class,必须写完整路径***">
<include method="***java暴露类里要公开的方法,如果不写默认全部公开***" />
</create>
<convert converter="bean" match="***一般来说是javabean***"> //int,String,list等不需要显式的转换就可以被js拿到
<param name="include" value="***javabean中的属性,用','隔开***" /> //这句可以不写
</convert>
<creator>标签负责公开用于Web远程的类和类的方法,<convertor>标签则负责这些方法的参数和返回类型。convert元素的作用是告诉DWR在服务器端Java 对象表示和序列化的JavaScript之间如何转换数据类型。
-->
</allow>
</dwr>
5、Jsp页面用户注册,直接js调用Java方法保存用户
<script type="text/javascript">
function submitt() {
var userMap = {};
userMap.id = regForm.id.value;
userMap.username = regForm.username.value;
userMap.password = regForm.password.value;
userMap.email = regForm.password.value;
UserDaoDwrjs.saveUser(userMap, userFun);//调用Java方法保存用户
} function userFun(data) {
if (data) {
alert("注册成功");
} else {
alert("注册失败");
}
}
</script>
</head>
<body>
<table align="center" border="0">
<form name="regForm">
<tr>
<td>登陆Id:</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>邮箱:</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td colspan="2"><input type="button" value="提交"
onclick="submitt()"></td>
</tr>
</form>
</table>
</body>
</html>
6.js调用Java方法更加id查找用户
<body>
<form name="findForm">
<table align="center">
<tr>
<td>查询ID:</td>
<td><input type="text" name="id"></td>
</tr>
<input type="submit" value="查询" onclick="selectUser()">
</table>
</form>
</body>
</html>
<script type="text/javascript">
function selectUser() {
UserDaoDwrjs.findUserById(findForm.id.value, {
callback:function(data) {
if (data == null) {
alert("用户不存在");
return;
}
alert("用户为:" + data.id + "用户名为:" + data.username);
},
async:true
});
}
</script>
采用DWR、maven保存数据到数据库的更多相关文章
- 5-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案数据篇(配置保存数据的数据库)
配置信息如下:这是我的python软件和APP软件默认连接的配置 数据库名称:iot 编码utf8 表格名字:historicaldata 字段 id 自增,主键 date ...
- hibernate4无法保存数据
hibernate4无法保存数据 author: hiu 以后都发文章我都备注一下作者了,hiu就是我了 红色字体更新日期:2014-07-08 初次使用hibernate4,使用getCurrent ...
- Android 学习笔记之如何使用SQLite数据库来保存数据...
PS:最近一阵子都在为考试复习...坑爹的计算机网络,复习了3天,最后该不会的还是不会...明天还考英语...真蛋疼... 学习内容: 1.使用SQLite数据库来保存数据... SQLite: ...
- 【Android Developers Training】 26. 在SQL数据库中保存数据
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Docker最全教程——数据库容器化之持久保存数据(十一)
上一节我们讲述了SQL Server容器化实践(注意,SQL Server现在也支持跨平台),本节将讲述如何持久保存数据,并且接下来将逐步讲解其他数据库(MySql.Redis.Mongodb等等)的 ...
- Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)
知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中 ...
- 【WPF学习笔记】之如何保存画面上新建的数据到数据库中并且删除画面上的数据和数据库的数据:动画系列之(五)
...... 承接系列四后续: 首先,我要在用户控件2中添加“保存”,“删除”按钮. XAML代码: <UserControl x:Class="User.uc_item" ...
- pandas数据保存至Mysql数据库
pandas数据保存至Mysql数据库 import pandas as pd from sqlalchemy import create_engine host = '127.0.0.1' port ...
- MTK Android Android数据保存到系统数据库
如果有留意Android中系统设置Settings里面的源码,你会发现代码中频繁用到了Settings.System操作,该类通过键值对的形式,将一些特定的值以全局的模式保存到Setting的数据库中 ...
随机推荐
- 管理支撑办公系统技术架构选型对照讨论(J2EE与SOA对照)
续:管理支撑办公系统技术架构选型及相关技术应用范围.方法分析 M域办公系统改造.整合涉及到OA.业务流程.部室信息站点.部室专业管理等系统和信息共享等新需求,从信息化视角来看,内容多并且杂,这里核心业 ...
- Swift - 触摸事件(点击,移动,抬起等)说明及用例
在iOS开发中,UIGestureRecognizer可以方便的响应处理手势事件. 而如果要想更精细的处理,我们还需要借助touchesBegan,touchesMoved,touchesEnded等 ...
- NET Core RC2 and .NET Core SDK Preview
NET Core RC2 and .NET Core SDK Preview 先看一下 .NET Core(包含 ASP.NET Core)的路线图: Beta6: 2015年7月27日 Beta7: ...
- VC实现文件拖拽OnDropFiles
文章转自http://blog.csdn.net/zamaolangzi/article/details/5645284 使用过QQ的人都知道,只要把文件拖拽到消息框中就可以传送文件了.那么这种功能是 ...
- iOS高效开源类库
因为iOS SDK相对比较底层,所以开发者就得受累多做一些体力活.不过幸运的是,有很多第三方的类库可以用来简化很多不必要的工作.笔者整理了一下在本人学习过程中用到的一些比较有用Objective-C开 ...
- 模拟new实例化对象。
使用new和字面量的的方法是两种主流创建对象的方法,两种最终都能达到同样的实例化的对象,本章主要围绕new关键字来实例化一个对象并且讲一个不使用new但是完全与new实例化对象相同的例子. 在使用ne ...
- Delphi面向对象设计的经验原则(61条)
(1)所有数据都应该隐藏在所在的类的内部. (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者. (3)尽量减少类的协议中的消息. (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深 ...
- 在Window和Linux下使用Zthread库
ZThread库是一个开源的跨平台高级面向对象的线性和sycnchronization 库,以运行POSIX 和Win32 系统中的C++程序. ZThread库的主页:http://zthread. ...
- KMP算法及KMP算法的应用(POJ2406)
///KMP算法#include<bits/stdc++.h> using namespace std; ]; void makeNext(const char P[],int next[ ...
- [IDEs]Eclipse设置花括号样式
用惯Vistual Studio,在使用Eclipse时发现有很多东西还是挺不习惯,第一个就要解决花括号的样式 步骤: 1.Windows->Preferences->Java->C ...