精华内容
下载资源
问答
  • DWR

    2019-10-17 17:11:18
    dwr和js类似,就是可以在后台调用java代码(与js一样,不刷新的情况下) 搭建步骤: 1 导入dwr.jar 2 配置web.xml 3 新建dwr.xml 4 新建java代码 访问 http://localhost:8080/项目名/dwr,查看是否生成 5 导入js文件...

    dwr和js类似,就是可以在后台调用java代码(与js一样,不刷新的情况下)
    搭建步骤:
    1 导入dwr.jar
    2 配置web.xml
    3 新建dwr.xml
    4 新建java代码
    访问 http://localhost:8080/项目名/dwr,查看是否生成
    5 导入js文件
    6 js回调函数
    web.xml文件的配置:

    <!-- dwr框架 -->
      <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>
              org.directwebremoting.servlet.DwrServlet
        </servlet-class>
        <init-param>
          <param-name>debug</param-name>
          <param-value>true</param-value>
        </init-param>
        <!-- 没有的话session报错  session Error-->
    	<init-param>
          <param-name>crossDomainSessionSecurity</param-name>
          <param-value>false</param-value>
       </init-param>
      </servlet>
      <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
      </servlet-mapping>
    

    建立dwr.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
    <dwr>
      <allow>
        <create creator="new" javascript="td">
          <param name="class" value="com.dwr.Testdwr" />
        </create>
        <!-- 相当于 Testdwr td = new Testdwr();
        	js中就使用td
         -->
        
        <create creator="new" javascript="studentDao">
          <param name="class" value="com.dao.StudentDao" />
        </create>
        
        <convert converter="bean" match="com.bean.StudentBean" />
      </allow>
    </dwr>  
    

    建立java代码(连接数据库的代码就不给出了):
    第一个使用的代码(实现两个数的相加):

    package com.dwr;
    
    public class Testdwr {
    	public int add(int a,int b){
    		System.out.println("dwr");
    		return a+b;
    	}
    }
    

    实现数据库中的添加、查询操作

     package com.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
    import com.bean.StudentBean;
    
    public class StudentDao {
    	
    private DBSource db = new SimpleDBSource();
    	
    	public int addStudent(StudentBean bean) {
    		int rows = 0;
    		Connection conn = null;
    		try{
    			System.out.println("dwr add");
    			conn = db.getConn();
    			String sql = "insert into student(name,age,sex) values(?,?,?)";
    			PreparedStatement ps = conn.prepareStatement(sql);
    			ps.setString(1, bean.getName());
    			ps.setInt(2, bean.getAge());
    			ps.setString(3, bean.getSex());	
    			rows = ps.executeUpdate();
    			ps.close();
    		}catch(Exception ex){
    			ex.printStackTrace();
    		}finally{
    			db.closeConn(conn);
    		}
    		return rows;
    	}
    
    	public List<StudentBean> selectAll() {
    		Connection conn = null;
    		List<StudentBean> students = new ArrayList<StudentBean>();
    		try{
    			conn = db.getConn();
    			String sql = "select * from student ";
    			PreparedStatement ps = conn.prepareStatement(sql);
    			
    	
    			ResultSet rs = ps.executeQuery();
    			while(rs.next())
    			{
    				StudentBean bean = new StudentBean();
    				bean.setId(rs.getInt("id"));
    				bean.setName(rs.getString("name"));
    				bean.setAge(rs.getInt("age"));
    				bean.setSex(rs.getString("sex"));
    				
    				students.add(bean);
    			}
    			rs.close();
    			ps.close();
    		}catch(Exception ex){
    			ex.printStackTrace();
    		}finally{
    			db.closeConn(conn);
    		}
    		return students;
    	}
    }
    

    jsp界面:
    在这里插入图片描述

    	<script type='text/javascript' src='/gouwuche/dwr/interface/td.js'></script>
    	<script type='text/javascript' src='/gouwuche/dwr/engine.js'></script>
    	<script type='text/javascript' src='/gouwuche/dwr/util.js'></script>
    	<script type='text/javascript' src='/gouwuche/dwr/interface/studentDao.js'></script>
    	<script type="text/javascript">
    		function jisuan(){
    			var a = document.getElementById("a").value;
    	        var b = document.getElementById("b").value;
    	      	**//回调函数**
    	        td.add(a,b,callbackHe);
    		}
    		//resultValue是td.add()方法的返回值
    		function callbackHe(resultValue){
    			document.getElementById("result").value = resultValue;
    		}
    	</script>
    	
    	第一个数:<input type="text" id="a"><br/>
        + <br/>
        第二个数:<input type="text" id="b"><br/>
       
        结果:<input type="text" id="result"><br/>
        <input type="button" value="计算" onclick="jisuan()"/><br/>
        
        <form action="" name="f1">
          用户名:<input type="text" id="username"/><br/>
          年龄:<input type="text" id="age"/><br/>
          性别:<input type="radio" name="sex" value="男" checked="checked">男
          <input type="radio" name="sex" value="女">女<br/>
          <input type="button" value="添加" onclick="addStudent()"/>
        </form>
      
        <script>
           function addStudent(){
              var username = document.getElementById("username").value;
              var age = document.getElementById("age").value;
              var sex = document.f1.sex.value;
              var p = new person(username,age,sex);
              studentDao.addStudent(p,callbackAdd);
           }
           
           function callbackAdd(result){
              if(result>0)
              {
                 alert("添加成功");
              }else{
                 alert("添加失败");
              }
           }
           //转化为Object
           function  person(username,age,sex){
    		 this.name = username;
    		 this.age    = age;
    		 this.sex    = sex;
    	   }
           
        </script>
        
    	<input type="button" value="显示全部" onclick="selectAll()"/>
        <div id="div">
          
        </div>
        <script>
           function selectAll(){
              studentDao.selectAll(callbackSelectAll);
           }
           function callbackSelectAll(data)
           {
              //alert(data.length);
              var info = "<table border='1'>";
              for(var i=0;i<data.length;i++)
              {
                 info += "<tr>";
                 info += "<td>"+data[i].id+"</td>";
                 info += "<td>"+data[i].name+"</td>";
                 info += "<td>"+data[i].age+"</td>";
                 info += "<td>"+data[i].sex+"</td>";
                 info += "</tr>";
              }
              info += "</table>";
              document.getElementById("div").innerHTML = info;
           }
        </script>
    
    
    展开全文
  • dwr

    2018-05-17 22:44:33
    源码github: https://github.com/666wg/dwr 源码CSDN:...     下载dwr.jar 到官网http://directwebremoting.org/dwr/index.html。下载这个jar即可。  下载commons-log...

    源码github: https://github.com/666wg/dwr

    源码CSDN:https://download.csdn.net/download/sinat_36710456/10421743

     

      •  

    下载dwr.jar

    到官网http://directwebremoting.org/dwr/index.html。下载这个jar即可。 
    下载dwr.jar

    下载commons-logging.jar

    官网上清晰的说明了dwr工作的时候需要依赖于commons-logging,所以还需要下载一下这个jar包。下载地址: 
    http://commons.apache.org/proper/commons-logging/download_logging.cgi

    项目目录

    把上面下载好的jar包放到刚才创建的项目的WebContent/lib目录下。

    那么我们不难理解,项目中有自己写的java方法,有一个jsp页面。然后项目本身添加一些配置(具体是web.xml和dwr.xml)。最后完整的项目目录就是这样了。 

    web.xml

    大家写javaweb的,对于web.xml一定是不陌生了。那么我也就不废话了,看下面的配置代码吧。

    • 官网上示例
    <servlet>
      <display-name>DWR Servlet</display-name>
      <servlet-name>dwr-invoker</servlet-name>  
      <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
      <init-param>
         <param-name>debug</param-name>
         <param-value>true</param-value>
      </init-param>
    </servlet>
    
    <servlet-mapping>
      <servlet-name>dwr-invoker</servlet-name>
      <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
    • 我的配置
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
      <display-name>dwrtest</display-name>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    
      <listener>  
        <listener-class>org.directwebremoting.servlet.DwrListener</listener-class>  
      </listener> 
    
      <servlet>
          <servlet-name>dwr</servlet-name>
          <!-- version 2 * -->
          <!-- <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> -->
          <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
          <init-param>
              <param-name>debug</param-name>
              <param-value>true</param-value>
          </init-param>
          <!-- 使用服务器反转AJAX  -->
          <init-param>
              <param-name>activeReverseAjaxEnabled</param-name>
              <param-value>true</param-value>
          </init-param>
          <!-- 是能够从其他域请求true:开启; false:关闭 -->
          <init-param>
              <param-name>crossDomainSessionSecurity</param-name>
              <param-value>false</param-value>
          </init-param>
          <!-- 允许远程调用js -->
          <init-param>
              <param-name>allowScriptTagRemoting</param-name>
              <param-value>true</param-value>
          </init-param>
    
          <load-on-startup>1</load-on-startup>  
      </servlet>
      <servlet-mapping>
          <servlet-name>dwr</servlet-name>
          <url-pattern>/dwr/*</url-pattern>
      </servlet-mapping>
    </web-app>
    • 其实按照官网上的示例来进行配置就足够了,我添加的那些可以做下参考。

    dwr.xml

    关于dwr.xml的配置,其实还是很需要技巧的。当然了,这个小项目本身不需要配置得多么复杂,如果有兴趣,建议还是到官网上自习的阅读文档,相信一定会让你有所收获。

    我的配置(由于我的jave文件在utils包下的DwrPush.java,所以我可以这么配置。)

    <?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>
            <create creator="new" javascript="DwrPush">
                <param name="class" value="utils.DwrPush"></param>
                <!-- 这个标签可以写也可以不写,无所谓的-->
                <include method="Send"/>
            </create>
        </allow>
    </dwr>

    DwrPush.java

    这个java类文件可以随意的放置,只要按照刚才的dwr.xml中声明的那样放置就行了。

    package utils;
    
    import java.util.Collection;
    
    import org.directwebremoting.ScriptBuffer;
    import org.directwebremoting.ScriptSession;
    import org.directwebremoting.WebContext;
    import org.directwebremoting.WebContextFactory;
    import org.directwebremoting.proxy.dwr.Util;
    
    public class DwrPush {
    
        @SuppressWarnings("deprecation")
        public static void Send(String msg){
            WebContext webContext = WebContextFactory.get();
            @SuppressWarnings("deprecation")
            Collection<ScriptSession> sessions = webContext.getAllScriptSessions();
    
            // 构建发送所需的JS脚本
            ScriptBuffer scriptBuffer = new ScriptBuffer();
            // 调用客户端的js脚本函数
            scriptBuffer.appendScript("callback(");
            // 这个msg可以被过滤处理一下,或者做其他的处理操作。这视需求而定。
            scriptBuffer.appendData(msg);
            scriptBuffer.appendScript(")");
            // 为所有的用户服务
            @SuppressWarnings("deprecation")
            Util util = new Util(sessions);
            util.addScript(scriptBuffer);
    
    
        }
    
    }

    说明:util.js和engine.js是dwr.jar中本来就存在的

    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>首次环境搭建</title>、
    
    
    <!-- 说明:util.js和engine.js是dwr.jar中本来就存在的 -->
    <script type='text/javascript' src='/dwr/dwr/util.js'></script>
    <script type='text/javascript' src='/dwr/dwr/engine.js'></script>
      <script type='text/javascript' src='/dwr/dwr/interface/DwrPush.js'></script>
    <script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
    
    
    <script>
    
    
    $(document).ready(function(){
        alert('can get here!');
        // 页面加载的时候进行反转的激活
        /* dwr.engine.setActiveReverseAjax(true); */
        dwr.engine.setActiveReverseAjax(true) ;
    
    
        // 点击页面按钮的时候触发的方法
        $("#button").click(function(){
            // 此类即为根据java文件生成的js文件
            var data = document.getElementById("data").value;
            DwrPush.Send(data);
        });
    });
    
    
    
    
    
    
    //用于后台调取的函数
    function callback(msg){
        //alert('test!');
        $("#ul").html($("#ul").html()+"<br />"+msg);
    }
    </script>
    </head>
    <body>
    <ul id="ul">
    
    
    </ul>
    
    
    <br/>
    <hr>
    
    
    <!-- https://blog.csdn.net/marksinoberg/article/details/55505423#下载commons-loggingjar -->
    <input type="text" id="data" name='data' />&nbsp;&nbsp;&nbsp;&nbsp;
    <input type='button' id="button" value="publish">
    
    
    </body>
    </html>
    

    调试运行

    文字展示篇

    图片展示

    上传图片试试

    说明:

    由于原博客中没有给出源码,现给出源码并记录重要内容,以供学习之用,对原博主表示感谢。

    转载:https://blog.csdn.net/marksinoberg/article/details/55505423#

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,486
精华内容 4,994
关键字:

dwr