1)输入/输出工具: request、response、out

2)通信掌握工具:pageContext、session、application

3)Servlet工具: page、config

jsp每3列换行Java后端笔记2JSP进阶 Node.js

4)缺点处理工具:exception

out工具:向jsp页面输出数据

out工具方法:

print(“输出的数据”);或println

newLine(); 输出换行字符

flush(); 输出缓冲区数据

close(); 关闭输出流

clear(); 打消缓冲区的数据,但是不输出到客户端

clearBuffer(); 打消缓冲区的数据,输出到客户端

getBufferSize(); 得到缓冲区大小

getRemaining();得到缓冲区没有被占用的空间

isAutoFlush(); 是否为自动输出

request工具:包含了有关要求的信息,完成了对HTTP要求的封装。
通过它可以得到从JSP页发出的:要求的头部信息、要求参数、cookie等。

request工具方法:

getAttribute(“属性名”); 获取指定属性的值,若属性值不存在返回null

getAttributeNames(); 获取所有属性名的凑集

getCookies(); 获取所有cookie工具

getCharacterEncoding(); 获取要求的字符编码办法

getContentLength(); 获取要求正文的长度,如不愿定返回-1

getMethod(); 获取客户端向做事器传送数据的方法

getParameter(“参数名”); 获取指定名字参数值

getParameterNames(); 获取所有参数的名字

getParameterValues(); 获取指定名字参数的所有值

getProtocol(); 获取客户端向做事器端传送数据的协议名称

getQueryString(); 获取以GET方法向做事器传送的查询字符串

getRequestURI(); 获取发出要求字符串的客户端地址

getRemoteAddr(); 获取客户真个IP地址

getRemoteHost(); 获取客户真个名字

getSession(); 获取和要求干系会话

getServerName(); 获取做事器的名字

getServerPort(); 获取做事器的端口号

removeAttribute(); 删除要求中的一个属性

setAttribute(“属性名”,属性值 ); 设置指定名字的参数值

setCharacterEncoding(); 设置要求的字符编码办法

response工具:完成了对HTTP相应的封装。
供应了多个方法来处理HTTP相应

response工具的方法:

sendRedirect(“a.jsp”); 把相应发送到另一个位置处理(重定向)

setContentType(); 设置HTTP相应的contentType类型

addCookie(); 添加一个cookie工具

encodeURL(); 利用sessionID封装URL

flushBuffer(); 逼迫把当前缓冲区内容发送到客户端

gerBufferSize(); 返回缓冲区大小

getOutputStream(); 返回到客户真个输出流工具

sendError(); 向客户端发送缺点信息

session工具:

session工具的方法:

getAttribute(“属性名”); 获取工具指定属性的值,若属性值不存在返回null

getAttributeNames(); 获取所有属性名的凑集

getCreationTime(); 返回session的创建韶光

getID(); 获取sessionID

getLastAccessedTime(); 返回末了发送要求的韶光

getMaxInactiveInterval(); 返回停滞操作后session工具的有效韶光(单位为秒)

invalidate(); 销毁session工具

isNew(); 每个要求是否会产生新的session工具

removeAttribute(); 删除指定名字的属性

setAttribute(); 设置指定名字的属性

setMaxInactiveInterval(); 设置停滞操作后session工具的有效韶光(单位为秒)

application工具:

application工具的方法:

getAttribute(); 获取工具中指定名字的属性值

setAttribute(); 设置指定名字的属性

getAttributeNames(); 获取所有属性名的凑集

getInitParameter(); 返回工具中指定名字的初始参数值

getServletInfo(); 返回servlet编译器中确当前版本信息

getRealpath(); 获取做事器指定位置的真实路径

page工具:

page工具的方法:

forward(); 重定向到另一页面

include(); 动态加载指定页面

getAttribute(); 获取页面范围内指定名字的属性值

findAttribute(); 在页面范围内搜索指定名字的属性

removeAttribute(); 删除页面范围中指定名字的属性值

getException(); 返回当前非常工具

getRequest(); 返回当前要求工具

getResponse(); 返回当前相应工具

getServletConfig(); 返回页面的config工具

getServletContext(); 返回页面所在的application工具

getSession(); 返回页面所在的session工具

getOut(); 返回out工具

2.get方法和post方法的差异

get方法提交表单,

1.要求的参数放在头部,参数会显示在地址栏,不屈安。

2.长度有限定(不同浏览器对地址栏长度有不同限定)。

3.必须利用字符办法提交。

post方法提交表单,

1.要求的参数放在要求体里,参数不会显示在地址栏,安全。

2.长度无限制(而要求体长度无限制)。

3.可以用字节办法,也可以用字符办法提交。

3.办理Jsp页面中文乱码

1.不让tomcat以默认字符集对中笔墨符进行编码,而采取要求的办法进行编码。

修正Tomcat的server.xml文件,在Connector节点增加uesBodyEncodingForURI=\公众true\"大众属性配置,在处理要求的页面中保留request.setCharacterEncoding(\公众GBK\"大众); 即可。

2.在接管参数时进行编码转换(先解码再转码)。
对表单提交的get、set都适用

String s=new String(request.getParameter(\公众name\公众).getBytes(\"大众ISO-8859-1\"大众),\"大众GBK\"大众);

4.重定向和要求转发

转发:客户端和做事端实行了1次要求1次相应,浏览器显示原地址。
转发的新地址必须是本web运用系统资源,重定向没有这个限定

重定向:客户端和做事端共实行了2次要求2次相应,浏览器显示新地址。

eg.

重定向

<body>

<%

request.setCharacterEncoding(\"大众GBK\公众);

String name=request.getParameter(\公众name\"大众);

String pwd=request.getParameter(\"大众pwd\"大众);

if(name.equals(\"大众admin\"大众)&&pwd.equals(\公众admin\"大众)){

response.sendRedirect(\"大众admin.jsp\公众);

}else{

response.sendRedirect(\"大众normal.jsp\公众);

}

%>

</body>

要求转发 是通过 RequestDispatcher方法 调用forward()方法完成的

<body>

<%

request.setCharacterEncoding(\"大众GBK\公众);

String name=request.getParameter(\"大众name\"大众);

String pwd=request.getParameter(\"大众pwd\公众);

if(name.equals(\"大众admin\"大众)&&pwd.equals(\"大众admin\公众)){

RequestDispatcher rd=request.getRequestDispatcher(\"大众admin.jsp\"大众);

rd.forward(request, response);

}else{

RequestDispatcher rd=request.getRequestDispatcher(\"大众normal.jsp\"大众);

rd.forward(request, response);

}

%>

</body>

5.cookie

web做事器为了辨别用户身份、进行会话跟踪而存在客户端上(常日经由加密)的数据

cookie由做事器端产生,发送给浏览器,cookie以键值对的形式保存在文本中。
不是九大内置工具,要先创建再利用。

运用:记录登录信息,购买商品信息,跟踪统计用户访问习气(什么韶光访问,访问了哪些页面,页面勾留韶光)

cookie工具方法:

getName(); 获取cookie的名称

getValue(); 获取cookie的值

setValue(); 创建cookie后对cookie进行赋值

setMaxAge(); 设置cookie的有效期(单位:秒)

getMaxAge(); 获取cookie的有效期

eg.

增加cookie的jsp文件

<body>

<%

//创建cookie

Cookie cookiename=new Cookie(\公众name\"大众,\"大众jacky\"大众);

//设置cookie有效韶光为3分钟

cookiename.setMaxAge(360);

//关于cookie的有效期设置要把稳:

1)设置有效期的方法:setMaxAge(),参数单位是秒

2)参数设置成>0的整数,表示cookie的生命周期,切不随着浏览器关闭失落效

3)参数设置为0,表示删除该cookie。
不设置或设置为-1,cookie会在窗口关闭后失落效

//向response工具中写入cookie

response.addCookie(cookiename);

response.sendRedirect(\公众getCookie.jsp\"大众);

%>

</body>

获取cookie的jsp文件

<body>

<%

//获取cookie工具数组

Cookie[]cookies=request.getCookies();

String userName=\"大众\"大众;

if(cookies!=null){

//以遍历的办法指定cookie

for(int i=0;i<cookies.length;i++){

if(cookies[i].getName().equals(\"大众name\"大众))

userName=cookies[i].getValue();

}

}

out.print(\公众用户名\公众+userName);

%>

</body>

6.session

会话:是指在一定韶光内,一个用户通过浏览器与做事器之间进行的一系列的要乞降相应的交互过程。

当用户向web运用做事器发送第一次要求时,做事器会为该用户创建一个唯一标识的会话,会话将一贯延续到访问结束(浏览器关闭或永劫光不访问web运用)

session运行机制:

做事器接到客户端要求时,先会检讨做事器是否已经为这个客户端建立了session,也便是判断客户端是否包含了sessionID(session的唯一标识)。
如果包含了sessionID,就通过sessionID找到session,来确定是哪个客户端访问的。
客户真个要求中没有sessionID,就创建一个session,并产生了sessionID,然后sessionID随着本次相应返回给客户端。
客户端用cookie保存sessionID(若禁用了cookie就自动转化为用URL-rewriting技能实现【URL重写,URL中包含了sessionID的信息】)

7.session和cookie的差异

session保存在做事器端,存储的是工具,随会话结束而关闭,存放主要信息

cookie保存在客户端,存储的是字符串,可以指定存在的时长,存放不主要的信息

8.jsp内置工具范围

page:在一个页面范围内有效,通过pageContext工具访问该范围内的工具

request:在一个做事器要求范围内有效,与客户端要求绑定在一起

session:在一次会话范围内有效,在会话期间与session绑定的工具皆属于该范围

application:在一个运用做事器范围内有效,当运用做事启动后即创建该工具,并与所有用户共享

9.什么是静态包含,什么是动态包含?描述两者的差异。

1.语法:

静态包含:<%@ include file=\"大众a.jsp \"大众%> 将两个jsp页面合成了一个jsp页面进行处理,在一个page范围内

动态包含:<jsp: include page=\"大众a.jsp \"大众%>

2.静态包含时,包含页面和被包含页面中的html.head,body等标签统共只有涌现一次,否则会报错;而动态包含不会。

3.静态包含不会检讨所包含文件中的变革;但是动态包含,可以检讨所含文件中的变革,并且可以带参数

4.静态包含是先将文件中内容导入被包含的文件中,再一起编译,末了再展现给用户(先包含再编译)

5.动态包含可以自动区分被包含文件是静态的还是动态的,如果是静态,则与静态包含一样处理;若是动态页面,

则可以前辈行动态的处理,再将结果包含进来。
(先编译再包含)

理解:

利用 <%@include...%> 静态包含

大略的理解便是你可以认为 这两个页面代码是写在同一个页面里。

利用 <jsp:include...> 动态包含

当 向这个页面发出要求后。
会转发到 include 的哪个页面去实行。
实行完了后又接着实行本页面余下的代码。