A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区


SeveletContext
读取文件:
只能读取.properties;
ServetContext只能在Servlet里面调用
Servlet环境下读取文件,可以使用
ServletContext中的getResoureAsStream读取
返回的是InputStream
getRealPath
返回的是磁盘绝对路径(String类型);
获得全局初始化参数:
getInitParameter();
获得文件类型;
getMimeType();
作为域对象存储数据:
ServletContext一个WEB项目只有一个,且被共享
Servlet环境下:
类加载器读取:
降低代码之间的耦合性,
用来加载class文件到内存
ReadFileUtils.class.getClassLoader().getResourceAsStream(文件名);
//返回一个InputStrem类型;
Response对象常用API
setStatus(int sc)//设置状态码;
<Servlet的生命周期(面试题)>
init方法用户第一次访问创建一次
destroy方法关闭服务器会销毁或者一处服务器项目
service方法客户端请求一次服务器执行一次
servlet对象在生命周期内只有一个
文件下载的方式
01:超链接下载,直接将文件的路径写到href:中,前提文件类型浏览器不支持
编写代码方式:
设置
两头一流
只适合英文名称类型;
Content-Type (头) :文件的HIME类型
Content-Disposition(头) :以下载
文件的输入流:
文件代码下载:
中文乱码问题解决:
get提交乱码问题:
new String (request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");
根据浏览器类型处理中文文件乱码的问题:
先把路径地址提前,防止重新编码后路径文件名错误,找不到;
response 输出响应:
01:getOutputStream().write();//字节流响应输出
工作空间和浏览器编码一致,可能不会出现乱码;
02:getWriter().println();//字符流响应输出
一定会乱码,字符流有缓冲区,默认编码ISO-8856-1,并且不支持中文;
写到所有的输出之前
getContentType("text/html;charset="UTF-8");
request请求:
A:获得请求方式:
getMethod();//获得请求方式
getRequestURI()'//获得请求路劲
getRequestURL()'//从IP地址开始
getRemoteAddr();//获得客户机的相关信息
getContextPath();//获得工程名;
B:获得从页面的提交参数:
getParameter();
getParameterMap();
getParameterNames();
getParameterValues();
C:获得域对象存储的数据:
setAttribute();
getAttribute();
removeAttribute();
request的作用范围:
一次请求的范围.
创建和销毁:
创建:客户端向服务器发送了一次请求以后
销毁:服务器响应之后;
注册解决request中文乱码的问题
get提交方式
修改tamcat编码;
使用URLEncoder和URLDecoder进行编码
URLEncoder编码:
String name=request.getParameter(请求参数)("name");
String string=new String(name.getBytes("ISO-8859-1"),"UTF-8");.
Tocmat版本8以上不需要设置
post提交方式
post参数都在请求体中
request的编码是ISO-8859-1;
request.setCharacterEncoding("UTF-8");
必须在参数提交前有效
<面试问题>
重定向和转发的区别():
重定向的地址栏会发生变化,转发的地址栏不会;
重定向两次请求两次响应,转发一次请求一次响应;
重定向路径需要加工程名,而转发不需要;
重定向可以跳转到任意网站,而转发只会在服务器内部的地址跳转;
存储消息显示用转发,跳转到别的站用重定向
转发:
request.getRequestDispatcher("不带工程名路径").forward(request,response);
Cookie和Session?
cookie是将数据保存到客户端浏览器;
向浏览器中保存数据
HttpServletResponse
cookie只有 有参构造
void addCookie();
获得从浏览器中带来的cookie;
· getName()//获取名字
· getValue()//获取值
· setDomain()//设置Cookie的有效域名
· setPath()//设置Cookie的有效路径;删除时用的
· setMaxAge()//设置Cookie的有效时间
单位是秒.
Cookie的分类:
会话级别的:默认的,浏览器关闭,Cookie销毁
持久级别的Cookie:可以设置Cookie的有效时间,
那么关闭浏览器Cookie还会存在,手动销毁持久性Cookie.setMaxAge()
前提是有效路径必须一致.
Session:
简介:
将数据保存到服务器端
Cookie有大小限制,Secsion没有
Cookie保存在客户端,Secsion保存在服务器端;
调用 getSession();
Session的生命周期与域范围:
服务器第一调用getSeccion的时候创建Session;
销毁:
三种情况
01: session过期,默认时间为三十分钟;
02:非正常关闭服务器,正常关闭服务器Session会被序列化到硬盘
03:手动调用session.invalidate();
作用范围:
一次会话
什么是JSP与使用?
Java服务端页面
可以在里面写Java代码,HTML元素,JSP内置;
JSP的执行过程:
JSP会被翻译成Servlet执行
JSP中如何编写Java代码:
<%! %>线程安全问题
<% %> 可以定义变量,定义类,代码块
<%= %> 翻译程sercice方法内部的out.print();在页面输出显示,不能写分号;
JSP内置元素
HTML注释是无法注释Java代码的;
JSP的指令
<%@ 指令语法 %>
· page指令
JSP脚本使用的语言,现在只能写Java
· include指令
设置文件保存到本地硬盘,以及生成Servlet后,Servlet保存到硬盘上的编码
· taglib指令
JSP的内置对象
JSP中可以直接使用的对象.
真实对象
1. request HttpServletRequest
2. response HttpServletResponse
3. session HttpSession
4. application ServlerContext
5. page Object
6. pageContext PageContext
7. config ServletConfig
8. out JspWriter5
9. exception Throwable
page 内置对象和out内置对象不是同一个对象,区别是真实对象不同;
pageContext内置对象:
获得其它的8个内置对象
JSP域的范围
page 当前页面
request 一次请求
session 一次会话
applicaont 整个项目
EL表达式
· 可以简化JSP代码,减少<%%>出现次数
· EL表达式:
${EL表达式}.
· EL的功能:
1. 获取数据:(JSP的四个域);
2. 执行运算:
3. 操作WEB开发的常用对象
4. 调用Java中的方法;
EL获取工具:
用什么名字存进去,用什么名字取出来;
${域对象名+Scope.K值 }
${K值};先从范围小的域中开始查找,无继续向上查找
· 获取数组的数据:
${K值[int n]};
· 获取集合的数据:
${K值[int n]}
· 获取Map集合的数据
${map.K值}
· 如果属性名中包含特殊字符,必须使用[];
${MAP.["K.sdsad"];
· 获取装有对象集合里面的数据
${K值[int n].数据名};
${fn}操作字符串
EL的执行运算:
算术运算
${n1+n2};//("2"+"3")会完成类型转换
逻辑运算:
${n1<n2};返回buer类型
关系运算:
${n1<n2&&n1>n3};//返回buer类型
三元运算:
${n1<n2 ? true:false };
EL操作WEB开发中的对象
· pageScope
· requestScope
· sessionScope
· applocationScope
· param,paramValues 接收参数
· header,headerValues 获取请求头信息
· initParam 获取全局初始化参数;
· cookie WEB开发中cookie
· pageContext WEB开发中的pageContext
获取Cookie中的值:
${cookie.Cookie传入的名字.value};
获取pageContext中的对象
获取工程路径:
${ pageContext.request.ContextPath};
JST:
JSTL是一个开放源代码的JSP标签库.
JSTL的标签库
core(核心类),fmt(国际化标签),xml(XML标签),sql(SQL标签),fn(JSTL提供EL函数库);
需要引入jar包;
引入标签库<%@ taglib uri="">
C标签
if标签
<c:if test="${n1>=n2}">
true输出内容
</c:if>
没有else
forEach标签
<c:forEach var="i(变量名)" items="$(arrs)"
${i}
</c:forEach>
Map集合遍历:
<c:forEach var="entry(变量名)" items="$(map)">
&{entry.key}得出K值
${entry.value}得出Y值
</c :forEach>
begin="" 开始
end="" 结束

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马