内置对象之request、response、session

目录

前言

一、request、response、session是什么?

二、使用步骤

1.request对象

1.1 访问请求参数

1.2 在作用域中管理属性

2.response

 2.1 重定向网页

2.2.1 禁用缓存

3.session

总结


前言

本章只讲解jsp内置函数中的三个函数,其他的下次讲解


提示:以下是本篇文章正文内容,下面案例可供参考

一、request、response、session是什么?

示例:

        request:请求

          response:响应

          session(用户级):会话

        会话开始:打开浏览器

        会话结束:关闭浏览器

二、使用步骤

1.request对象

request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数

request对象的常用方法:

 

1.1 访问请求参数


我们知道request对象用于处理HTTP请求中的各项参数。在这些参数中,最常用的就是获取访问请求参数。当我们通过超链接的形式发送请求时,可以为该请求传递参数,这可以通过在超链接的后面加上问号“?”来实现。注意这个问号为英文半角的符号。

如果要同时指定多个参数,各参数间使用与符号“&”分隔即可。

示例:在页面中定义超链接。

<a href="delete.jsp?id=1">删除</a>

 在delete.jsp页面中,可以通过request对象的getParameter()方法获取传递的参数值。

<%
    String id = request.getParameter("id");  //获取id参数的值
%>

添加界面(示例):

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action=doadd.jsp method="post">
                   <div id="user">用 户
                     <input type="text" name="textfield" />
                   </div>
                   <div id="password">密   码
                     <input type="password" name="textfield2" />
                   </div>
                   <div>
                   性别<input name="sex" type="radio" />男
            <input checked='true' type="radio" name="sex" />女<br>
            爱好:
            <input name="like" type="checkbox" value="吃饭" />吃饭
            <input name="like" type="checkbox" value="美女" />美女
            <input name="like" type="checkbox" value="文学" />文学
            <input name="like" type="checkbox" value="科技" />科技<br>
            地址:
            <select name="dz">
                <option value="北京" >北京</option>
                <option value="南京" >南京</option>
                <option value="东京" >东京</option>
                <option selected="selected" value="张家界" >张家界</option>
            </select>
            <br />
            个性签名:
            <textarea name="finfo">
                
            </textarea>
            <br>
                   </div>
                   <div id="btn"><input type="submit" style="width: 40px" value='注册'><input type="reset" style="width: 40px" value='重置'>
                            </div>
              </form>
</body>
</html>添加帮助界面:
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");//设置请求编码
String uname = request.getParameter("textfield");//接收用户名
String upwd = request.getParameter("textfield2");//接收密码
String sex = request.getParameter("sex");//接收性别
String like = request.getParameter("like");//接收爱好
String dz = request.getParameter("dz");//接收地址
String finfo = request.getParameter("finfo");//接收注释

	
//连接数据库
	Class.forName("oracle.jdbc.driver.OracleDriver");
	String url = "jdbc:oracle:thin:@localhost:1521:orcl";
	Connection con = DriverManager.getConnection(url, "scott", "tiger");
	
	/*
		查询到用户的最大编号
		最大编号+1,做为新添加的用户的编号
	*/
	
	//这里的代码是用来 得到最新编号的
	int nextId=1;//做为新用户的编号
	PreparedStatement ps = con.prepareStatement("select max(SUID) from dlbg");
	//执行sql语句
	ResultSet rs= ps.executeQuery();
	if(rs.next()){
		//查询到最大的编号,加1,就是新数据的编号
		nextId = rs.getInt(1)+1;
	}
	ps = con.prepareStatement("insert into dlbg values(?,?,?,?,?,?,?)");
	//给占位符赋值
	ps.setInt(1, nextId);
	ps.setString(2, uname);
	ps.setString(3, upwd);
	ps.setString(4, sex);
	ps.setString(5, like);
	ps.setString(6, dz);
	ps.setString(7, finfo);
	//5、执行sql语句
	int i = ps.executeUpdate();
	if(i>0){
		out.print("<script>alert('添加成功');location.href='index.jsp'</script>");
	}else{
		out.print("<script>alert('添加失败');location.href='add.jsp'</script>");
	}
%>
 执行结果:

add界面:

主界面: 

 

1.2 在作用域中管理属性


在进行请求转发时,需要把一些数据传递到转发后的页面进行处理。这时,就需要使用request对象的setAttribute()方法将数据保存到request范围内的变量中。request对象的setAttribute()方法的语法格式如下:

request.setAttribute(String name,Object object);


在将数据保存到request范围内的变量中后,可以通过request对象的getAttribute()方法获取该变量的值,具体的语法格式如下:

request.getAttribute(String name)


 

2.response

response对象用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面内有效。

request对象的常用方法:

方法说明
sendRedirect(String path)将网页重定向到另一个页面。
setHeader(String name, String value)设置HTTP响应报头信息。

 2.1 重定向网页


使用response对象提供的sendRedirect()方法可以将网页重定向到另一个页面。重定向操作支持将地址重定向到不同的主机上,这一点与转发不同。在客户端浏览器上将会得到跳转的地址,并重新发送请求链接。用户可以从浏览器的地址栏中看到跳转后的地址。进行重定向操作后,request中的属性全部失效,并且开始一个新的request对象。sendRedirect()方法的语法格式如下:
 

response.sendRedirect(String path);

参数说明:

path:用于指定目标路径,可以是相对路径,也可以是不同主机的其他URL地址。

示例:使用response对象提供的sendRedirect()方法重定向到登录页面。

<%
    response.sendRedirect("login.jsp");  //重定向到登录页面
%>

2.2.1 禁用缓存

在默认情况下,浏览器将会对显示的网页内容进行缓存,这样可以提高网页的显示速度。对于一些安全性要求比较高的网站,通常需要禁用缓存。

示例:通过设置HTTP头的方式实现禁用缓存。

<%
	response.setHeader("Cache-Control", "no-store");
	response.setDateHeader("Expires", 0);
%>

3.session

session在网络中被称为会话。由于HTTP协议是一种无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。为了弥补这一缺点,HTTP协议提供了session。通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这个时间取决于服务器,例如,Tomcat服务器默认为30分钟。不过这个时间可以通过编写程序进行修改。

示例:保存与获取session对象信息。

session.setAttribute("a", uname);//保存session对象
String uname=session.getAttribute("uname");//获取session对象

配置web.xml文件:

如果使用的是Tomcat,可以向下面这样配置web.xml文件:

<session-config>
	<session-timeout>15</session-timeout>
</session-config>

超时以分钟为单位,Tomcat中的默认的超时时间是30分钟。

Servlet中的getMaxInactiveInterval( ) 方法以秒为单位返回超时时间。如果在web.xml中配置的是15分钟,则getMaxInactiveInterval( ) 方法将会返回900。


总结


以上就是今天要讲的内容,本文仅仅简单介绍了内置函数之中request、response、session的使用,而内置函数提供了大量能使我们快速便捷地处理数据的函数和方法。剩下的几个内置函数下章进行讲解。


版权声明:本文为weixin_67780833原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。