dwr 引用util.js,engine.js,beanName.js路径问题如果引用util.js,engine.js,beanName.js的jsp页面在webRoot下面,则
<script type= "text/javascript" src= "dwr/engine.js"/></script>
<script type= "text/javascript" src= "dwr/util.js"/></script>
<script type= "text/javascript" src= "dwr/interface/beanName.js"></script>
就可以正确引用,若引用util.js,engine.js,beanName.js的jsp页面不在webRoot下面,则必须加上<%=request.getContextPath() %>即变成了
<script type= "text/javascript" src= "<%=request.getContextPath() %>/dwr/engine.js"/></script>
<script type= "text/javascript" src= "<%=request.getContextPath() %>/dwr/util.js"/></script>
<script type= "text/javascript" src= "<%=request.getContextPath() %>/dwr/interface/beanName.js"></script>
<%=request.getContextPath() %>这个方法应该能解决许多webRoot路径问题。很多连接的首页在webRoot下,不会引起路径问题若不在webRoot下,就会出现路径问题。都是由相对路径引出的问题。request.getContextPath()是工程名,也就是发布到web服务器的虚拟目录,比如/Sucre
补充:
<script type= "text/javascript" src= "dwr/engine.js"/></script>
这里的src="dwr/engine.js"中的dwr要与web.xml中的<url-pattern>相对应
<!-- 指定核心Servlet的URL映射 -->
< servlet-mapping >
< servlet-name >dwr-invoker </ servlet-name >
<!-- 指定核心Servlet映射的URL -->
< url-pattern >/dwr/* </ url-pattern >
</ servlet-mapping >
js引入模板
<script src='/[YOUR-WEBAPP]/dwr/ interface/[YOUR-SCRIPT].js'></script>
<script src='/[YOUR-WEBAPP]/dwr/engine.js'></script>
其实dwr根本没有生成任何“文件”。我们创建一个dwr项目后,想去查看它自动生成的js文件,不管你用什么方法搜索(比如google的桌面搜索引擎),都不会找到所谓的“dwr/interface/xxx.js”或者“dwr/engine.js”、“dwr/util.js”文件。甚至连这样的目录都没有。
这些url都是虚拟的,并不代表真实路径。engin.js和util.js还比较好办,因为我们在dwr.jar包的org.directwebremoting中可以找到。
但dwr自动产生的js文件则根本就是子虚乌有的事情。但在web.xml里的servletmapping配置:
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
可以看出,实际上以dwr/开头的url都会转DwrServlet处理。
我们可以看看以dwr/访问web会产生什么样的结果,在地址栏中输入:http://localhost:8084/firtDWR/dwr/index.html
出来一个页面,描述了你想通过dwr访问的那个java类。点击链接进去。则列出了更详细的关于这个类的描述。包含怎么在javascript里使用它,javascript能够访问的方法及无权访问的方法列表。甚至在这里,我们还可以调用其中的几个方法进行测试。