dwr的简单使用
项目中使用到了dwr,所以就简单的学习了一下下:在页面点击按钮弹出窗口显示登陆用户基本信息。
1.导入dwr.jar到项目的lib包中。
2.配置web.xml文件:在web.xml中添加添加Servlet映射。
<servlet>
<display-name>DWR Servlet</display-name>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>logLevel</param-name>
<param-value>DEBUG</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
3.添加来配置dwr.xml文件:注意dwr文件和web.xml保持在同一目录下,create是函数调用相关参数和方法(反射),convert是返回的封装对象(如User)。
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://directwebremoting.org/schema/dwr10.dtd" > <dwr> <init> <converter id="testbean" class="uk.ltd.getahead.dwrdemo.test.TestBean2Converter"/> </init> <allow> <create creator="new" javascript="LoginUserInfo"> <param name="class" value="com.wl.manager.dwr.LoginUserInfo"/> <include method="showLoginUserInfo"/> <include method="showString"/> </create> <convert match="com.wl.common.dto.User" converter="bean"></convert> </allow> </dwr>
4.在jsp页面引入相关js:注意,双引号引入的js是虚拟的,和dwr.xml中的javascript属性相对应(所以页面使用dwr.xml中对应的映射时,就需要引入这种虚拟js,建议在单个页面使用就引入),而单引号引入的js是在dwr.jar包中封装存在的(建议在页面头部、菜单部分、尾部等页面统一引入)。
<!-- dwr start ok! --> <script type="text/javascript" src="/dwr/interface/LoginUserInfo.js"> </script> <script type=\'text/javascript\' src=\'/dwr/engine.js\'></script> <script type=\'text/javascript\' src=\'/dwr/util.js\'></script> <!-- dwr end -->
5.jsp调用js,和普通js函数一致:调用函数。
onclick="dodwr(${Session.userid})"
6.相关js:其中function(data){*}是回调函数,data是后台方法函数返回的数据,可以是String,封装对象(如User对象),List,Map,本例中是返回封装对象.
function dodwr(uid){
LoginUserInfo.showLoginUserInfo(uid, function(data) {
$(“#login_user_name”).val(data.userName);
$(“#login_user_password”).val(data.passWord);
$(“#login_user_status”).val(userStatus2(data.userStatus));
$(“#login_user_createTime”).val(data.creatTime);
});
});
7.后台方法:对象User不在叙述,仅给出查询方法。
package com.wl.manager.dwr; import java.sql.SQLException; import com.wl.common.dao.UserDao; import com.wl.common.dto.User; public class LoginUserInfo{ public String showString (){ System.out.println("zhe shi yi ge ceshi!"); return "zheshi ygie ceshi "; } public User showLoginUserInfo(int uid) throws SQLException { User u = new UserDao().getById(uid); System.out.println(u.getUserName()); System.out.println(u.getPassWord()); return u; } }