JavaWeb学习之Path总结、ServletContext、ServletResponse、ServletRequest(3)

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=中文
时间: 2024-10-06 02:23:30

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

JavaWeb学习之Servlet(四)----ServletConfig获取配置信息、ServletContext的应用(转)

JavaWeb学习之Servlet(四)----ServletConfig获取配置信息.ServletContext的应用 [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140877.html [正文] 一.ServletConfig:代表当前Servlet在web.xml中的配置信息(用的不多) String getServletName()  -- 获取当前Servlet在web.xml中配置的名字 String

【JAVAWEB学习笔记】13_servlet

JavaWeb核心之Servlet 教学导航 学习目标: 案例一.完成用户登录功能 案例二.记录成功登录系统的人次 一.Servlet简介 1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是java代码,通过java的API  动态的向客户端输出内容 servlet规范:包含三个技术点 1)servlet技术 2)filter技术---过滤器 3)listener技术--

JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet

JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet 一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet-name>ActionServlet</servlet-name> 3 <servlet-class>me.gacl.web.controller.ActionServlet</s

JavaWeb学习——页面跳转方式

JavaWeb学习——页面跳转方式 摘要:本文主要学习了请求转发和响应重定向,以及两者之间的区别. 请求转发 相关方法 使用HttpServletRequest对象的 getRequestDispatcher(String path) 方法获取RequestDispatcher类型的转发器. 使用RequestDispatcher转发器的 forward(ServletRequest request, ServletResponse response) 方法进行转发. 实例 1 @Overrid

javaweb学习之Servlet开发(二)

javaweb学习总结(六)--Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. 例如: 1 <servlet> 2 <servlet-name>ServletConfigDemo1</servlet-name> 3 <servlet-class>gacl.servlet

JavaWeb学习总结(二) —— Servlet

一.Servlet概述 1. 什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: 接收请求数据: 处理请求: 完成响应. 例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口. 2. 实现Servlet的方式 实现Ser

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

转载:http://www.cnblogs.com/xdp-gacl/p/3763559.html 只为成功找方法,不为失败找借口! javaweb学习总结(六)——Servlet开发(二) 一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. 例如: 1 <servlet> 2 <servlet-name>ServletC

JavaWeb学习(三)----JSP内置对象详解

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4065790.html 联系方式:[email protected] [系列]JSP学习系列文章:(持续更新) JavaWeb学习(一)----JSP简介及入门(含Tomcat的使用) JavaWeb学习(二)----JSP脚本元素.指令元素.动作元素 JavaWeb学习(三)----JSP内置对象

JavaWeb学习篇之----Servlet过滤器Filter和监听器

JavaWeb学习篇之----Servlet过滤器Filter和监听器 首先来看一下Servlet的过滤器内容: 一.Servlet过滤器的概念: *************************************************************************************** Servlet过滤器是在Java Servlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改. Servlet过滤器本身并不产生请求和响应对象,