[学习笔记] 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/

评论