Servlet的一些API使用介绍
final String rootPath = getServletConfig().getServletContext().getRealPath("/"); 获取项目运行的根路径:
rootPath + /WEB-INF/classes/account.txt 获取文件的项目绝对路径
在eclipse 发布到Tomcat的debut调试当中,将会打印出D:\jettTest\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\AuanyCompensate3\/WEB-INF/classes/account.txt
前面的目录是work目录
同时还能正常找到文件。。。。。。跪了
发布到Tomcat之后,打印出来的rootPath是 D:\Program Files\apache-tomcat-7.0.34\webapps\AuanyCompensate3\/WEB-INF/classes/account.txt
仍然找到的是项目目录所在的位置。
-----------------------------------------------------------------------
关于HttpServletResponse : sendRedirect的目录问题
sendRedirect("/uu");表示相对于服务器根路径。如http://localhost:8080/Test应
用(则提交至http://localhost:8080/uu);
Forward代码中的"/uu"则代表相对与WEB应用的路径。如http://localhost:8080/Test应用(则提交至
http://localhost:8080/Test/uu);
尤其要注意的是forward的相对路径是相对当前路径,如果当前访问的路径是http://localhost:8080/AuanyCompensate3/servelt/xxxxx
那么当前的forward跳转就是在xxxxx/servlet目录下,而事实上这个访问路径我们是可以自己设定的在web.xml或者注解中,有可能WEB-INF目录下就没有这个路径,所以我们这时需要在forward之前加上../用于跳出当前目录,找到真实的目录
比如
打包出来的工程目录
----AuanyCompensate3
----admin
----js
----jsp
----style
----WEB-INF
此时如果要访问jsp/userLogin.jsp
而当前的访问路径在http://localhost:8080/AuanyCompensate3/servelt/xxxxx 此时只能request.forward("../"+"/jsp/userLogin.jsp");是不是很麻烦?
不过我们如果在配置访问url的时候不多加前缀,就不会出现这个问题。
sendRedirect也可以直接发绝对地址:
“http://” + request.getServerName() + ":" + request.getServerPort() + "" + request.getContextPath() +"servlet/xxxx"请求
-----------------------------------------------------------------------------------
放置client访问到Jsp文件,可以通过Filter来处理这种情况,将所有的关于jsp的客户端访问请求都转发到登录界面。
-----------------
模板模式: BaseHttpServlet SessionValidateServlet 抽象出来的一些servlet公共操作。
Tencent QQ Wechat的 平台接入 也属于模板模式
----------------------------------------------------------------------------------------------------------------------------------------------------
在Java的工程项目中,如果资源文件在src/目录下,使用的时候需要加上new File("src/xxxxx");
如果是跟src同级目录,则可以直接new File("xxxxxx"),并且打成jar包之后,所有的资源文件都会被清理到jar包的同级目录,这时src将不会存在,都会从classes的目录下寻找资源文件,所以不建议将资源文件放置到src目录下同事使用src路径,应该使用类路径的相对方式。
在Java Web 工程当中,资源文件放置到src的目录下,直接使用new File("xxxx")就可以取到了。
当然也可以使用Thread.currentThread().getContextClassLoader().getResourceAsStream("account.txt");说白了都是在classes的同级目录,就是当前类目录下。
在java工程当中如果把account.txt放置到src下,则建议使用上述方式加载,而不是使用src/account.txt的方式加载。
-----------------------------------------------------
通过filter 和 listenr完成请求过滤和组件初始化
通过使用javax.servlet.ServletContextListener 来初始化 HttpIO组件,日志组件,配置文件等等。
通过使用Filter 来完成jsp请求的过滤(具体可以看有无session),和admin文件夹下jsp请求的过滤,admin下的访问必须有root用户名才行
可以通过filter-mapping 来配置访问过滤器
/admin/*
/jsp/*
filter listener servlet 这三项配置在web.xml当中很重要,记得还有个session的listener
http://blog.csdn.net/opnmzxcvb/article/details/4554329
---------------------------------------------------------------------------------------
在Jsp页面当中,/代表绝对路径 没有/代表相对路径
比如要使用Style下面的css样式或者js 则只需要使用Stype/xxx js/xxxx
还有就是每个jsp页面都需要使用
String path = request.getContextPath();这段什么用
这样的代码是在jsp里出现的吧, 那么他的含义就是为了得到一个路径,做动态网站时,需要提交form表单在表单的action里面就会这样来写 action="<%=path %>/add.do" 这样来提交到相应的servlet中去,这样可以避免路径的错误,而采用这样的相对路径会更好些
答:request.getContextPath()应该是得到项目的名字,如果项目为根目录,则得到一个"",即空的字条串, 如果项目为abc, <%=request.getContextPath()% >/ 将得到abc/,服务器端的路径则会自动加上
在JSP中我们总会出现一个路径问题比如:
jstest001是项目名
1、绝对路径
<script type="text/javascript" src="/jstest001/ext/ext-base.js"></script>和
2、相对路径
<script type="text/javascript" src="/ext/ext-base.js"></script>
在我们实际应用中,我们经常在jsp中使用到路径,可以有一些是从项目开始的绝对路径有一些是相对路径。而经常源码照抄过来不能运行。
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>">
其实是上面这三句话搞的鬼,很简单的一句话。如果没有这三句话的话就可以直接写到绝对路径,但是有的话就要写相对路径
绝对路径就是 href = “<%request.getContextPath()%>/servlet/xxxxxxx”
有了上面的配置 直接写 servlet/xxxxx
Servlet的一些API使用介绍的更多相关文章
- Odoo 二次开发教程(五)-新API的介绍与应用
[关于odoo新API的介绍,Internet上资料很少,或者不够完整详实,这会对初学者造成很大的困惑,本篇的目的就是希望能帮助新手了解新API的大概] odoo 新api的实现是借助于python装 ...
- Tyk API网关介绍及安装说明
Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...
- spring3 的restful API RequestMapping介绍
原文链接:http://www.javaarch.net/jiagoushi/694.htm spring3 的restful API RequestMapping介绍 在spring mvc中 @R ...
- FileNet P8 工作流生命周期管理和 Process Engine API 应用介绍
摘录:https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0902wangzheng/ FileNet P8 工作流生 ...
- Tesseract-OCR-05-主要API功能介绍
Tesseract-05-主要API功能介绍 tesseract本身代码是由c/c++混编而成的,其中有用的简单的接口函数几乎都是在baseapi.h中 从其处理过程中,不难得出: 它还需要有一个im ...
- 四. 几个Promise常用API的介绍与使用
四. 几个常用API的介绍与使用 1. Promise构造函数:Promise(excutor){} excutor函数:同步执行 (resolve, reject) => {} resolve ...
- Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解
Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...
- Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】
什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使用会话技术 ...
- 腾讯微博java(android)sdk新增微博api详细介绍
本文主要介绍腾讯微博android sdk中新增微博有关的8个接口,以及使用的示例代码 注意:以下所有的api示例代码都需要先新建QqTSdkService类对象qqTSdkService并初始化,见 ...
随机推荐
- Java开源内容管理CMS系统J4CMS支持静态化直接ftp上传到你的空间了
页面可直接编辑的cms系统j4cms能够直接支持使用ftp 输出 html到你的空间了 真正的静态化 这是静态化后的站点 http://www.j4cms.com/ 源代码上传至csdn了,能够下载源 ...
- apache+php+mysql最新版windows下
卸载以前的Apache 1.控制面板先卸载 2.删除E:\Program Files (x86)\Apache Software Foundation下的apache目录 一.安装apache 1.c ...
- 玩转Android之二维码生成与识别
二维码,我们也称作QRCode,QR表示quick response即快速响应,在很多App中我们都能见到二维码的身影,最常见的莫过于微信了.那么今天我们就来看看怎么样在我们自己的App中集成二维码的 ...
- Java类加载及实例化的调用顺序
标题起得略拗口,大概意思就是说在一个Java类中,域和构造方法的调用顺序. 1. 没有继承的情况 单独一个类的场景下,初始化顺序为依次为 静态数据,继承的基类的构造函数,成员变量,被调用的构造函数. ...
- Magento网站如何添加一个可配置产品
有的产品,比如服装,同一件衣服有S.M.L.XL.XXL等尺码供客户选择,或者有多种颜色可以供客户选择,Magento中管这种有选项供客户选择的产品叫做可配置产品 (Configurable Prod ...
- UML 行为图之用例图 总结
学习UML图形 推荐阅读<UML参考手册>第2版. http://www.umlchina.com/ 推荐微软的开发软件设计模型 http://msdn.microsoft.com/zh ...
- poj2299 二分思想
poj2299 http://poj.org/problem?id=2299题意: 一个含有n个数的数组, 每次只能交换相邻的两个数, 求最少操作多少次可以使该数组变成一个有序数组(从小到大). ...
- 保留关键字 (Transact-SQL)
https://msdn.microsoft.com/zh-cn/library/ms189822(v=sql.120).aspx Microsoft SQL Server 将保留关键字用于定义.操作 ...
- 什么情况下会调用到session_destroy()
https://segmentfault.com/q/1010000000191102 首先 ... session_destory() 是一个函数 ... 这个函数在任何情况下都不会被 php 引擎 ...
- jdk在windows中的配置
1.下载jdk(java developer kit),其内部包含jre(java runtime environment): 安装解压缩到一盘内,如:G:\Program Files\Java: 2 ...