博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DWR的配置以及常见错误的处理
阅读量:5101 次
发布时间:2019-06-13

本文共 4030 字,大约阅读时间需要 13 分钟。

最近学习DWR,mark下

DWR框架常用于用户名的验证和注册

1.DWR介绍

DWR就是可以在javascript里面直接调用Java代码,它的实现是基于Ajax,可以实现无刷新效果(数据与服务器进行交互,用户完全感觉不到)

2.DWR配置和使用

1)web.xml的配置

<servlet>

  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

通常要看DWR生成的测试页,通过测试页执行可以直接检测你写的java类代码正确性,

可以在上面servlet标签里面加入:

<init-param>

  <param-name>debug</param-name>
  <param-value>true</param-value>
</init-param>

就可以访问网址:http://localhost:8080/app/dwr,查看运行(app为你创建的项目名称)

2)dwr.xml(新建这个xml文件在WEB-INF目录下)

下面的配置适合于js调用没有返回值和参数的java方法

配置dwr.xml:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr30.dtd">               //这行标签一定加上,否则会有错误
<dwr>
<allow>
<create creator="new" javascript="userdao" >       
<param name="class" value= "com.dao.userDao" />

<include method="checkUser"/>

</create>           //creator表示实例的生成方式为new,DWR会调用类的默认构造函数来构造

                          //javascipt表示java类让js访问类的对象时的名称,param表示公开给js的java类,

                          //include是公开给js的java方法,exclude表示禁止公开的java方法,如果不写include标签就代表此java类的所有方法都公开

</allow> 

</dwr>

js调用:

先引入 javascript 脚本

<script src='dwr/interface/ userdao.js'></script>

<script src='dwr/engine.js'></script>

<script src='dwr/util.js'></script>

其中 userdao.js 是 dwr 根据配置文件公开给js的java对象的名称, engine.js 和 util.js 是 dwr 自带的脚本文件。

其次,编写调用 java 方法的 javascript 函数

Function check(){

      userdao.checkUser();

}

3.错误

web.xml的<servlet>标签下面加入下面代码,跨域访问

<init-param>

<param-name>crossDomainSessionSecurity</param-name>

<param-value>false</param-value>
</init-param>

我做的一个用户名验证和注册时出现的错误:(你可能也会有的)

User:用户的实体类

UserDao:用户和数据库交互的类,方法checkUser(String name)检查用户名是否存在,

方法addUser(User user)来注册用户,(注意我传进来的是一个对象)

给方法传进来对象怎么解决?

在dwr.xml中配置<convert>标签

<convert converter="bean" match="com.bean.User" >

   <param name="include" value="username,password"></param>

</convert>

Bean转换器,match为javabean的目录,param制定要转换的javabean的属性

js接受到表单的数据,你可以用json的格式表示,比如:

var user={username:”zhangsan”,password:”123”};

转换器可以自动把json格式的数据转换为javabean的形式,new创建一个实例,通过set和get函数把参数传给对象。

(一定要注意,实体类User一定要有空的构造函数,没有会出现Error错误的)

注册还有传值方式:

js直接传进来的是两个参数,java的方法参数是usernamepassword

或者

传给Java的是jsonjava导入json类库来解析json数据

 我的实验的一些配置和主页代码:(web.xml,dwr.xml,index.jsp)

1 
2
3
7
Test
8
9
index.html
10
index.htm
11
index.jsp
12
default.html
13
default.htm
14
default.jsp
15
16
17
dwr-invoker
18
uk.ltd.getahead.dwr.DWRServlet
19
20
debug
21
true
22
23
24
crossDomainSessionSecurity
25
false
26
27
28
29
dwr-invoker
30
/dwr/*
31
32 33
34 37
38
39
40
41
42
43
44
45
46
47 48
49
50 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 51 <% 52 String path = request.getContextPath(); 53 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 54 %> 55 56 57 58 59 60 61 My JSP 'index.jsp' starting page 62
63
64
65
66
67
70 71 72 73 74

用户注册

75 用户名: 
76 密码:
77 78 79 80 81 82 109
View Code

一些运行结果:

 

转载于:https://www.cnblogs.com/wang118/p/9146928.html

你可能感兴趣的文章
string StartsWith 方法 Https
查看>>
finally不管有没有错都会运行 finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码...
查看>>
jmeter非GUI的运行命令
查看>>
波特率
查看>>
2016 Multi-University Training Contest 2
查看>>
xftp找不到匹配的outgoing encryption 算法 怎么解决
查看>>
【一周一算法】算法3:最常用的排序——快速排序
查看>>
四则运算实现
查看>>
JMV监控工具之JConsole
查看>>
iis 访问网站需要进行身份验证
查看>>
Project: Individual Project - Word frequency program
查看>>
python安装BeautifulSoup注意事项
查看>>
DEDE时间
查看>>
《神经网络和深度学习》系列文章七:实现我们的神经网络来分类数字(上)...
查看>>
java——线程池
查看>>
JY游戏之毁经典《扫雷》
查看>>
用户角色权限设计
查看>>
URAL-1991 The battle near the swamp 水题
查看>>
Expected value at 1:0 异常解决方法
查看>>
Linux OS共享文件
查看>>