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使用介绍的更多相关文章

  1. Odoo 二次开发教程(五)-新API的介绍与应用

    [关于odoo新API的介绍,Internet上资料很少,或者不够完整详实,这会对初学者造成很大的困惑,本篇的目的就是希望能帮助新手了解新API的大概] odoo 新api的实现是借助于python装 ...

  2. Tyk API网关介绍及安装说明

    Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...

  3. spring3 的restful API RequestMapping介绍

    原文链接:http://www.javaarch.net/jiagoushi/694.htm spring3 的restful API RequestMapping介绍 在spring mvc中 @R ...

  4. FileNet P8 工作流生命周期管理和 Process Engine API 应用介绍

    摘录:https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0902wangzheng/ FileNet P8 工作流生 ...

  5. Tesseract-OCR-05-主要API功能介绍

    Tesseract-05-主要API功能介绍 tesseract本身代码是由c/c++混编而成的,其中有用的简单的接口函数几乎都是在baseapi.h中 从其处理过程中,不难得出: 它还需要有一个im ...

  6. 四. 几个Promise常用API的介绍与使用

    四. 几个常用API的介绍与使用 1. Promise构造函数:Promise(excutor){} excutor函数:同步执行 (resolve, reject) => {} resolve ...

  7. Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解

    Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...

  8. Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】

    什么是会话技术 基本概念: 指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个这个过程我们称为一次会话. 为什么我们要使用会话技术 ...

  9. 腾讯微博java(android)sdk新增微博api详细介绍

    本文主要介绍腾讯微博android sdk中新增微博有关的8个接口,以及使用的示例代码 注意:以下所有的api示例代码都需要先新建QqTSdkService类对象qqTSdkService并初始化,见 ...

随机推荐

  1. Java开源内容管理CMS系统J4CMS支持静态化直接ftp上传到你的空间了

    页面可直接编辑的cms系统j4cms能够直接支持使用ftp 输出 html到你的空间了 真正的静态化 这是静态化后的站点 http://www.j4cms.com/ 源代码上传至csdn了,能够下载源 ...

  2. apache+php+mysql最新版windows下

    卸载以前的Apache 1.控制面板先卸载 2.删除E:\Program Files (x86)\Apache Software Foundation下的apache目录 一.安装apache 1.c ...

  3. 玩转Android之二维码生成与识别

    二维码,我们也称作QRCode,QR表示quick response即快速响应,在很多App中我们都能见到二维码的身影,最常见的莫过于微信了.那么今天我们就来看看怎么样在我们自己的App中集成二维码的 ...

  4. Java类加载及实例化的调用顺序

    标题起得略拗口,大概意思就是说在一个Java类中,域和构造方法的调用顺序. 1. 没有继承的情况 单独一个类的场景下,初始化顺序为依次为 静态数据,继承的基类的构造函数,成员变量,被调用的构造函数. ...

  5. Magento网站如何添加一个可配置产品

    有的产品,比如服装,同一件衣服有S.M.L.XL.XXL等尺码供客户选择,或者有多种颜色可以供客户选择,Magento中管这种有选项供客户选择的产品叫做可配置产品 (Configurable Prod ...

  6. UML 行为图之用例图 总结

    学习UML图形 推荐阅读<UML参考手册>第2版. http://www.umlchina.com/  推荐微软的开发软件设计模型 http://msdn.microsoft.com/zh ...

  7. poj2299 二分思想

    poj2299   http://poj.org/problem?id=2299题意: 一个含有n个数的数组, 每次只能交换相邻的两个数, 求最少操作多少次可以使该数组变成一个有序数组(从小到大).  ...

  8. 保留关键字 (Transact-SQL)

    https://msdn.microsoft.com/zh-cn/library/ms189822(v=sql.120).aspx Microsoft SQL Server 将保留关键字用于定义.操作 ...

  9. 什么情况下会调用到session_destroy()

    https://segmentfault.com/q/1010000000191102 首先 ... session_destory() 是一个函数 ... 这个函数在任何情况下都不会被 php 引擎 ...

  10. jdk在windows中的配置

    1.下载jdk(java developer kit),其内部包含jre(java runtime environment): 安装解压缩到一盘内,如:G:\Program Files\Java: 2 ...