[学习笔记] JSP/Servlet技术之JSP数据交互(一)
# 学习 # · 2020-09-07
什么是JSP内置对象
1、JSP内置对象:在编写JSP页面时,不需要做任何声明就可以直接使用的对象。
2、JSP内置对象不需要实例化:内置对象是由Web容器加载的一组Servlet API的实例,这些实例由JSP规范进行了默认的初始化操作,可以直接在JSP中使用。
3、常用的内置对象:out、request、response、session、application。
JSP内置对象之out
1、out对象:用于向浏览器输出数据。
2、out对象常用的方法:
<%
void print(String value); //打印字符串
%>
3、out对象常用方法实例:
<%
out.print("Hello,World!");
%>
JSP内置对象之request
1、request对象:包含了有关浏览器请求的信息。
2、request对象常用的方法:
<%
String getParameter(String name); //根据页面表单组件名称获取页面提交数据
String[] gerParamterValues(String name); //获取一组以相同名称命名的表单组件提交的数据
void setCharacterEncoding(String charset); //设置请求编码以防止乱码,只针对POST有效
RequestDispatcher getRequestDispatcher(String path); //返回一个RequestDispatcher对象
%>
3、request对象常用方法实例:
//index.jsp案例代码
<%@ page language="java" pageEncoding="UTF-8"%>
<form name="form" method="post" action="request.jsp">
用户名:<input type="text" name="name" value="kdc">
密码:<input type="password" name="pwd" value="kdc">
来源:<input type="checkbox" name="channel" value="报刊">报刊
<input type="checkbox" name="channel" value="网络">网络
</form>
//request.jsp案例代码1
<%
String name = request.getParameter("name"); //返回:kdc
String[] channel = request.getParameterValues("channel"); //返回数组
for(String ch : channel) {
out.print(channel); //遍历循环输出channel数组
}
%>
//request.jsp案例代码2
<%
//转发跳转到myinfo.jsp网页中
request.getRequestDispatcher("myinfo.jsp").forward(request, resopnse);
%>
//myinfo.jsp案例代码1
<%
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
%>
<body>
<p>用户名:<%=name %></p>
<p>密码:<%=pwd %></p>
</body>
4、乱码处理:
(1)POST请求:
<% request.setCharacterEncoding("UTF-8"); %>
(2)GET请求:
<% name = new String(name.getBytes("ISO-8859-1"),"UTF-8"); %>
(3)在Tomcat中设置字符集:目录\conf\server.xml
<Connector port="8080" protocol="HTTP/1.1
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
JSP内置对象之response
1、response对象:用于响应客户端请求并向客户端输出信息。
2、response对象常用的方法:
<%
void addCookie(Cookie cookie); //向客户端添加cookie
void setContentType(String type); //设置HTTP响应的contentType类型
void setCharacterEncoding(String charset); //设置响应所采用的字符串编码类型
void sendRedirect(String location); //将请求重新定位到一个新的URL上
%>
3、response对象常用方法案例:
//request.jsp案例代码3
<%
//重定向跳转到myinfo.jsp网页中
String name = request.getParameter("name");
response.sendRedirect("myinfo.jsp?name=" + name);
%>
4、转发和重定向的区别:
对比项 | 转发 | 重定向 |
---|---|---|
请求的次数 | 1 | 多 |
作用的位置 | 服务器内 | 浏览器(客户端) |
浏览器的地址 | 不会改变 | 会改变 |
请求的数据是否存在 | 存在 | 不存在 |
目标URL | 本项目内 | 任意项目 |
JSP内置对象之session
1、会话:一个会话就是在一段时间内一个客户端与Web服务器连接的一连串相关的交互过程。
2、会话机制:是一种服务端的机制,当用户向服务器发出第一次请求时,服务器会为该用户创建唯一的会话,一直延续到用户访问结束。
3、sessionid:服务器判断是否创建了相关会话的唯一标识。在客户端的cookie中,保存sessionid的名称是JSESSIONID。
4、session对象:允许用户访问会话的相关信息,以及绑定数据到会话。
5、session对象的常用方法:
<%
String getId(); //获取sessionid
void setMaxInactiveInterval(int interval); //设置session的非活动时间
int getMaxInactiveInterval(); //获取session的有效非活动时间,单位为秒
void invalidate(); //设置session对象失效
void setAttribute(String key, Object value); //以key/value的形式将对象保存到session中
Object getAttribute(String key); //通过key获取session中保存的对象
void removeAttribute(String key); //从session中删除指定key对应的对象
%>
6、session对象常用方法实例:
//request.jsp案例代码4
<%
String name = request.getParameter("name");
//将name保存到session中
session.setAttribute("name",name);
//设置session过期时间10分钟
session.setMaxInactiveInterval(10*60);
//重定向到myinfo.jsp页面
response.sendRedirect("myinfo.jsp");
%>
//myinfo.jsp案例代码2
<%
//获取session中的name
String name = (String)session.getAttribute("name");
String sessoinid = session.getId();
%>
7、会话失效:
(1)通过session对象的setMaxInactiveInterval()方法设置过期时间。
(2)在项目的web.xml中设置代码:单位为分钟,设置0或负数表示永不失效。
<session-config>
<session-timeout>10</session-timeout>
</session-config>
(3)在应用服务器\conf\web.xml中设置:单位为分钟。
<session-timeout>10</session-timeout>
8、session与窗口的关系:
(1)每个session对象都与一个浏览器窗口对应,重新开启一个浏览器窗口,可以重新创建一个session对象。不同版本浏览器之间可能有所差别。
(2)通过超链接打开的新窗口,新窗口的session与其父窗口的session相同。
9、include指令:用于加载公共部分文件。
<%@ include file="应用文件路径" %>
如若转载,请注明出处:一木林多 - https://www.l5v.cn/archives/104/
评论