1、Path总结
1、java项目
1 File file = new File("");
file.getAbsolutePath();
* 使用java命令,输出路径是,当前java命令停留的盘符
* F:\workspaces\20141123\demo\bin
* 使用myeclipse或eclipse运行时
* F:\workspaces\20141123\demo
2 File file = new File("/");
file.getAbsolutePath();
* 获得当前盘符
* F:\
3 URL url = Hello.class.getClassLoader().getResource("");
* 获得路径,使用类加载器
* F:/workspaces/20141123/demo/bin/
* 当前类被加载时,所在的文件根目录
4 URL url = Hello.class.getClassLoader().getResource("/");
* 不能使用
* null
2、web项目
1、通过servletcontext获得文件,WebRoot根目录下的文件
ServletContext sc = this.getServletContext();
* 获得实际路径
* sc.getRealPath("/1.html");
* 获得URL
* URL url = sc.getResource("/1.html");
* 获得流【**】
* InputStream is = sc.getResourceAsStream("/1.html");
如果要获取WebRoot/page/abc/2.html,则
InputStream is = sc.getResourceAsStream("/page/abc/2.html");
2、web的相对路径
* 前提:相对当前的页面1.html
* 使用分类:
1、abc:与当前页面同级的目录或servlet的名称
* <a href="c/c.html">c.html</a><br>
2、/abc:相对于web站点,%tomcat%/webapps/
* <a href="/day06_web/b/c/c.html">c.html</a><br>
3、./abc:当前目录,与第一种情况相同
* <a href="./c/c.html">c.html</a><br>
4、../abc:上一次目录
* <a href="../b/c/c.html">c.html</a><br>
总结:操作过程
当前页面:http://localhost:8080/day06_web/b/b.html
目标页面:http://localhost:8080/day06_web/b/c/c.html
/ -- webapps -- http://localhost:8080 2、ServletContext
* 对当前web项目上下文的描述(对当前web项目所有内容的描述),由tomcat在启动时创建,tomcat关闭时销毁。说白了,也就是说可以管理WebRoot下的文件,比如读取WebRoot下的文件
* servlet -- > init(ServletConfig) --> config.getServletContext();
* 当前servlet的所在的项目
* tomcat为每一个web项目单独创建一个区域,用来管理整个项目。此区域成为ServletContext
* 管理当前项目【*****】
ServletContext sc = this.getServletContext();//源码其实就是config.getServletContext()
* 获得实际路径,要求必须/开头
* sc.getRealPath("/1.html");//得到WebRoot根目录下1.html的绝对路径
* 操作数据
* add set get remove delete
* setAttribute/getAttribute/removeAttribute
* ServletContext对象对所有的servlet共享数据
* 给当前web项目配置内容【**】
* 配置文件的位置:web.xml
* 配置内容,例如配置数据库连接字符串
<context-param>
<param-name>username</param-name>
<param-value>root</param-value>
</context-param>
* 如何读取
//获得ServletConetxt
ServletConetxt sc = this.getServletContext();
//获得所有的配置信息名称<context-param><param-name>username</param-name>
Enumeration<String> names = sc.getInitParameterNames();
while(names.hasMoreElements()){
String value = sc.getInitParameter(name);
System.out.println("context:"+name+":"+value);
}
* context root
* 当前ServletContext所指web项目的根
* tomcat --> webapps/webName/
* myeclipse -->webName/WebRoot/ 3、ServletResponse
* 服务器对浏览器做出的响应,将需要发送给浏览器的所有数据全部存放在此对象上。
* 发送数据,使用流操作,将所需要的数据,存放在指定的流中,数据将显示到浏览器中
HttpServletResponse response ;
* 字符流
* response.getWriter();
* 字节流
* response.getOutputStream();
* 当使用getOutputStream时,不能使用getWriter
* getOutputStream() has already been called for this response
* 当使用getWriter时,不能使用getOutputStream
* getWriter() has already been called for this response
* 总结:两个流同时只能使用一个
* 字节流:getOutputStream,一般在程序中使用具有拷贝功能等
* 发送中文
* 不能发送
* out.print(data); 不能发送中文数据
* 异常信息:java.io.CharConversionException Not an ISO 8859-1 character: 中
* 可以发送
* out.write(data.getBytes("UTF-8"));
* 字符流:getWriter,一般在程序中发送数据内容
* 发送中文
* out.println("中文");
* 乱码【****】
* response.setContentType("text/html;charset=utf-8");
* 通知tomcat和浏览器发送数据的编码
* 注意:
* 设置编码时,必须放置在需要输出语句之前,建议放置在doGet或doPost第一行 4、ServletRequest
* 浏览器向服务器的请求(浏览器将数据发送给服务器时,数据存放的地方)
* 请求方式:GET和POST
* GET:发送的数据,追加在请求的URL之上
* POST:发送的数据在HTTP请求体中
* 浏览器发送数据
* 表单form,
* method属性:指定的请求方式
* action属性:接收数据的程序路径
* 服务器获得浏览器发送的数据
* 获得单个数据
* request.getParameter("username");
获取input type="radio"时,获取的是选中的值
* 获得一组数据
* request.getParameterValues("love");
获取input type="checkbox"时,获取的是选中的值
* 处理中文乱码
* request.setCharacterEncoding("UTF-8");
* 注意:
* 此方法只对POST请求有效,GET需要单独处理
* 需要放置在获得数据之前,建议放在第一个行
一般建议将处理doGet的方法交给doPost进行处理,在doPost中获取
request.setCharacterEncoding("UTF-8");
String userName = request.getParameter("userName");
如果非要在doGet中获取,可以使用以下代码:
第一种方式:
String userName = new String(request.getParameter("userName").getBytes("ISO-8859-1"),"UTF-8");
第二种方式:
//得到参数字符串
String query = request.getQueryString();
//解码
String q = URLDecode.decode(query,"UTF-8");
结果:q:uername=中文

JavaWeb学习之Path总结、ServletContext、ServletResponse、ServletRequest(3)的更多相关文章

  1. Javaweb学习笔记——(九)——————Servlet的进入,及ServletConfig、GenericServlet、HttpServlet、ServletContext、获取类路径资源

    Servlet1.什么是Servlet? *Servlet是Javaweb三大组件之一(Servlet,Filter,Listener) *Servlet是用来处理客户端请求的动态资源 *Servle ...

  2. JavaWeb学习总结(四)—ServletConfig和ServletContext

    一.ServletConfig 1. ServletConfig介绍: ServletConfig是Servlet中的init()方法的参数类型,服务器会在调用init()方法时传递ServletCo ...

  3. JavaWeb学习——Servlet相关的接口和类

    JavaWeb学习——Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...

  4. JavaWeb学习总结-04 Servlet 学习和使用

    一 Servlet 1 Servlet概念 Servlet时运行在服务器端的Java程序. Servlet的框架核心是 javax.servlet.Servlet 接口. 所有自定义的Servlet都 ...

  5. 【JAVAWEB学习笔记】13_servlet

    JavaWeb核心之Servlet 教学目标 案例一.完成用户登录功能 案例二.记录成功登录系统的人次 一.Servlet简介 1.什么是Servlet Servlet 运行在服务端的Java小程序, ...

  6. JavaWeb学习——页面跳转方式

    JavaWeb学习——页面跳转方式 摘要:本文主要学习了请求转发和响应重定向,以及两者之间的区别. 请求转发 相关方法 使用HttpServletRequest对象的 getRequestDispat ...

  7. JavaWeb学习——了解Servlet

    JavaWeb学习——了解Servlet 摘要:本文主要学习了什么是Servlet,以及如何使用Servlet进行开发. 基础知识 背景 随着互联网技术的发展,基于HTTP和HTML的web应用急速增 ...

  8. javaweb学习总结(六)——Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  9. javaweb学习之Servlet开发(二)

    javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个< ...

随机推荐

  1. HDU 3535 分组混合背包

    http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n组工作,T时间,每个工作组中有m个工作,改组分类是s,s是0是组内至少要做一件,是1时最多做一件 ...

  2. ndk学习20: jni之OnLoad动态注册函数

    一.原理 当在系统中调用System.loadLibrary函数时,该函数会找到对应的动态库, 然后首先试图找到"JNI_OnLoad"函数,如果该函数存在,则调用它 JNI_On ...

  3. 关闭CENTOS不必要的默认服务

    CentOS关闭服务的方法: 图形界面,运行ntsysv chkconfig –level 2345 服务名称 off 服務名稱 建議 說明 acpid 停用 Advanced Configurati ...

  4. 使用GitHub

    1. 进入 1.1 建立账号 打开网站https://github.com/主页上就可以注册.注册之后会有一个简单的帮助文档,在帮组文档上可以下载一个PC客户端(如果是WINDOWS平台,需要.NET ...

  5. 【GoLang】转载:我为什么放弃Go语言,哈哈

    我为什么放弃Go语言 作者:庄晓立(Liigo) 日期:2014年3月 原创链接:http://blog.csdn.NET/liigo/article/details/23699459 转载请注明出处 ...

  6. 如何查看Git对象

    原文:http://gitbook.liuhui998.com/7_2.html 如果在阅读本文之前,你还不知道git是如何进行存储的,请先阅读<Git是如何存储对象的>. 我们可以使用c ...

  7. [20160730]while 条件的死循环和正常循环对比

    正常循环 import java.io.*; import java.util.*; public class MyPrintStreamTest3{ public static void main( ...

  8. 如何使用参数 appActivity+appPackage 和 app

    本文针对RobotFrameWork中AppiumLibrary测试库. 首先,Open Application 这个方法不能向手机中安装应用,需要提前在手机中安装好,如使用 adb install ...

  9. ACM/ICPC 之 判别MST唯一性-Kruskal解法(POJ1679)

    判别MST是否唯一的例题. POJ1679-The Unique MST 题意:给定图,求MST(最小生成树)是否唯一,唯一输出路径长,否则输出Not Unique! 题解:MST是否唯一取决于是否有 ...

  10. FFMpeg 滤镜中英文对照

    FFMpeg ver 20160213-git-588e2e3 滤镜中英文对照 2016.02.17 by 1CM T.. = Timeline support 支持时间轴 .S. = Slice t ...