一、ServletContext实现请求转发
1、得到请求分发器:RequestDispatcher
ServletContext.getRequestDispatcher(String path):path转发的目标。path路径必须以"/"开头,"/"就代表当前应用。比如/day05 /

特点:原来用户请求的地址不变,响应由目标响应的。

二、读取配置文件的三种方式
*.properties *.xml
1、使用ServletContext.getRealPath(String filePath)读取资源文件。path路径必须以"/"开头,"/"就代表当前应用。
作用:getRealPath:得到指定相对路径path资源的实际存放路径(部署绝对路径)

特点:可以读取任何文件,只能用在web开发环境下。
2、ResourceBundle:非Web环境下。专门读取*.properties文件的。只能读取类路径下的资源文件。
3、类加载器:ClassLoader
非Web环境下。读取任何资源文件。只能读取类路径下的资源文件。

三、Servlet规范中核心接口类图

四、HttpServletResponse概述
1、作用:向客户端输出内容。
2、具体方法:
响应行:响应码;响应码描述;
响应头:
正文:流

五、向客户端页面输出中文数据
1、字节流
data.getBytes("UTF-8")
解决浏览器乱码问题:
a、更改浏览器的编码(不可取)
b、通知浏览器使用UTF-8解码。(响应头:Content-type=text/html;charset=UTF-8)
response.setHeader("Content-Type", "text/html;charset=UTF-8");或者response.setContentType("text/html;charset=UTF-8");
c、给客户端输出<meta>头
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
2、字符流
a、PrintWriter(JavaWeb中)默认查ISO-8859-1,可以通过HttpServletResponse.setCharacterEncoding(编码)更改默认编码
不要忘记通知浏览器以相同的编码进行解码。
b、HttpServletResponse.setContentType("text/html;charset=UTF-8")
有2个作用:更改字符流的默认编码为UTF-8,同时通知了客户端解码码表

六、HttpServletResponse应用案例:
1、控制动态资源不要缓存
2、控制静态资源的缓存时间
3、文件下载:中文名称的文件下载
4、定时刷新
5、动态输出随机验证码图片
七、HttpServletResponse的一些细节
1、在同一个Servlet中,response的字节和字符输出流互斥。
2、response的所有输出是输出到自己的缓存中的。容器从response对象的缓存中取出正文数据与响应头和响应码组织成HTTP协议的格式,然后再打给浏览器。
3、response的输出流,容器会自动给你关闭。

八、HttpServletRequest概述及常用方法
1、该对象中包含了所有客户端带过的东东

九、HttpServletRequest获取请求头
十、HttpServletRequest获取请求参数(内省;BeanUtils框架)
getParameter(name)方法
getParameterValues(String name)方法
getParameterNames方法
getParameterMap方法 :key:请求参数名 value:请求参数值数组
getInputStream:以流的形式获取正文数据

十、请求参数的中文乱码问题:
1、POST:
客户端使用什么编码,就以什么编码传递请求参数。
通知自己的处理程序,客户端提交过来的数据编码:request.setCharacterEncoding("UTF-8");(对get无效)
2、GET:
ISO-8859-1
手工编码:new String(data.getBytes("ISO-8859-1"),"UTF-8");
十二、请求转发和重定向的不同
请求重定向:(客户端行为)
地址栏会变。发出了2次请求。
response.setStatus(302);
response.setHeader("Location", "/day05/servlet/RequestDemo5");
或者
response.sendRedirect("/day05/servlet/RequestDemo5");

请求转发:(服务器行为)
地址栏不会变。发出了1次请求。
源资源(工商局) 目标资源(民政局):共享请求中的数据

重点:
ServletRequest也是一个域对象:Map<String,Object>

--

一、各种表单输入域(中文请求参数)
1、如果表单输入域的type为radio和checkbox,如果用户一个都不选,则不向服务器传递数据。
2、如果选择了radio或checkbox的输入项中的其中一个,看他们有没有value,如果有,则传value的取值。如果没有,值为on。
---------------------------------------------------------------------------------------------------------------------------------
二、请求转发和包含
1、请求转发:(当前应用内转)
方式一:
ServletContext.getRequestDispatcher(String path):path必须以"/"开头,表示绝对路径
方式二:
ServletRequest.getRequestDispatcher(String path):path如果"/"开头,表示绝对路径;如果不以"/"开头,表示相对路径

2、转发的细节:AServlet(源组件)--->BServlet(目标组件)
**转发前会清空response的正文。

转发页面上只会输出目标组件的输出,源组件的任何页面输出都无效。

原则:转发前,不要刷新或关闭response的输出流。
3、包含:RequestDispatcher
AServlet(源组件)--->BServlet(目标组件):AServlet包含BServlet的输出内容

目标组件所有设置的头都无效,正文有效。
---------------------------------------------------------------------------------------------------------------------------------
三、各种URL地址的写法
绝对地址:建议使用
绝对路径的写法:何时需要加上应用名称"/day06"(如果地址给客户端用,要加上。如果给服务器端用,"/"就代表当前应用,即"/day06")
<img src="path"/> 要加/day06
<link type="text/style" href="path"/> 要加/day06
<a href="path"/> 要加/day06
<script type="text/javascript" src="path"/> 要加/day06
<form action="path"/> 要加/day06

getRequestDispatcher(String path): 不要加。"/"就代表了
头:Refresh=2;URL=path 要加/day06
ServletContext.getRealPath(String path): 不要加。"/"就代表了

response.sendRedirect(String path): 要加/day06

Servlet深层知识的更多相关文章

  1. Servlet基本知识

    Servlet基本知识 1.IDEA创建第一个Servlet程序xing 这里说明如何使用 IDEA Ultimate 2020.1.3版本来新建第一个web程序.参考 MoonChasing 1.1 ...

  2. 面试之jsp、Servlet相关知识——生命周期, 区别等

    1.servlet生命周期 所谓生命周期,指的是servlet容器如何创建servlet实例.分配其资源.调用其方法.并销毁其实例的整个过程. 阶段一: 实例化(就是创建servlet对象,调用构造器 ...

  3. Servlet基础知识

    基本知识一.Web结构1.两种应用程序 ①桌面应用程序:QQ.CS.MyEclipse.Office.DW.360.浏览器等必须下载.安装.桌面快捷方式.注册表信息.操作系统后台服务.占用操作系统端口 ...

  4. Servlet基本知识总结

    Servlet 简介 Servlet是什么? Servlet是一个Java编写的程序,此程序是基于Http协议的,并运行在web服务器上或者应用服务器上.它主要是作为web浏览器或其他Http客户端的 ...

  5. Servlet基础知识总结

    Servlet是JavaWeb应用开发的核心组件.Servlet运行在Servlet容器中(例如最常用的Tomcat),它可以为各种客户请求提供相应服务.Servlet可以轻松完成以下任务: 动态生成 ...

  6. JSP SERVLET 基础知识

    jsp(java server page)和servlet是JAVA EE规范的两个基本成员,是JAVA WEB开发的重点也是基础知识.JSP本质上也需要编译成SERVLET运行. JSP比较简单,可 ...

  7. Tomcat是如何加载Spring和SpringMVC及Servlet相关知识

    概述 大家是否清楚,Tomcat是如何加载Spring和SpringMVC,今天我们就弄清下这个过程(记录最关键的东西) 其中会涉及到大大小小的知识,包括加载时候的设计模式,Servlet知识等,看了 ...

  8. 第一次接触servlet的知识

    什么是Servlet?① Servlet就是JAVA 类② Servlet是一个继承HttpServlet类的类③ 这个在服务器端运行,用以处理客户端的请求 Servlet相关包的介绍--javax. ...

  9. servlet部分知识总结

    1.解决中文显示乱码问题: 对于servlet :servlet里面加入代码response.setContentType("text/html;chartset=utf-8"); ...

随机推荐

  1. [Tex学习笔记]积分平均

    $\def\avint{\mathop{\mathchoice{\,\rlap{-}\!\!\int} {\rlap{\raise.15em{\scriptstyle -}}\kern-.2em\in ...

  2. ruby中proc和lambda的return区别

    学习ruby有一段时间了,但是我看了好几遍proc和lambda的return区别的区别讲解,始终没明白到底什么区别,今天上午又看,终于感觉是茅塞顿开有点领悟了 一下内容部分来自<<rub ...

  3. SQL%NOTFOUND

    异常相关: 源地址:https://zhidao.baidu.com/question/215737667.html EXCEPTIONwhen others thenrollback;dbms_ou ...

  4. [HTML] CSS3 边框

    CSS3 边框 用CSS3,你可以创建圆角边框,添加阴影框,并作为边界的形象而不使用设计程序,如Photoshop. 在本章中,您将了解以下的边框属性: border-radius box-shado ...

  5. SG函数模板(转)

    ps:sg[i]为0表示i节点先手必败. 首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数.例如mex{0,1,2,4}=3.me ...

  6. 41. Unique Binary Search Trees && Unique Binary Search Trees II

    Unique Binary Search Trees Given n, how many structurally unique BST's (binary search trees) that st ...

  7. 【转载】JMeter学习(一)工具简单介绍

    JMeter学习(一)工具简单介绍 一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静 ...

  8. host DNS 访问规则

    昨天站点一直出现302循环重定向问题,捣鼓了半天才解决,原来是hosts和dns配置问题. 注:当你的站点出现循环重定向时,首先应该关注的hosts以及dns配置,确保无误. 下面记录下相关知识点: ...

  9. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  10. 使用DotNetOpenAuth搭建OAuth2.0授权框架——Demo代码简单说明

    前段时间随意抽离了一部分代码作为OAuth2的示例代码,若干处会造成困扰,现说明如下: public class OAuthController : Controller { private stat ...