JSP详细篇

JSP内置对象

JSP使用Java作为脚本语言,所以JSP具有强大的对象处理功能,并可以动态创建web页面内容。但Java语言在使用时,需要先实例化一个对象。而JSP为了简化开发,提供了内置对象,用来实现很多JSP应用。

在JSP中提供9大内置对象。分别为:request、response、session、application、out、pageContext、config、page、exception。

request对象

request对象封装了客户端生成的HTTP请求的所有细节。主要包括:HTTP头信息,系统信息,请求方式,请求参数等。

1.访问请求参数

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

范例:

新建index.jsp,链接到deal.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>使用request对象请求参数</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<a href="./RequestDetail/deal.jsp?id=1&user=">处理页面</a>

</body>

</html>

新建deal.jsp。用request对象的getParameter( )方法获取id、user、pwd参数的值

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%

String id = request.getParameter("id");
//取得id参数值

String user = request.getParameter("user");
//取得user参数值

String pwd = request.getParameter("pwd");
//取得pwd参数值

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>这是处理页面</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

id参数值为:<%=id %><br/>

user参数值为:<%=user %><br/>

pwd参数值为:<%=pwd %><br/>

</body>

</html>

输出结果:

id参数值为:1

user参数值为:

pwd参数值为:null

PS:

在使用request的getParameter()方法时,如果指定的参数不存在,则返回null。如果指定了参数名,但是没有指定参数值,则返回空字符串””

2.在作用域中管理属性

在进行请求转发的时候,需要将一些数据传递到转发后的页面进行处理。此时就需要request对象的setAttribute()方法将数据保存到request范围内的变量中。

request对象的setAttribute( )方法的语法格式如下:

request.setAttribute(String name,Object object);

参数说明:

A.name:表示变量名,为String类型。在转发后的页面取数据的时候,就是通过这个变量名来获取数据的

B.object:表示传递的变量值。为Object类型

将数据保存到request对象后,可以通过request对象的getAttribute()方法获取该变量的值。

request()对象的getAttribute()方法的语法格式如下:

request().getAttribute(String name);

参数说明:

name:表示变量名。该变量名在request范围内有效

范例:

创建index.jsp页面,将页面转发到deal.jsp页面

Index.jsp页面如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>使用request对象管理作用中的属性</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<%

try
//捕获异常信息

{

int x = 100;

int y = 0;

request.setAttribute("result", x/y);
//保存执行结果

}

catch(Exception e)

{

request.setAttribute("result","页面产生错误");

}

%>

<jsp:forward page = "deal.jsp"/> //页面跳转

</body>

</html>

Deal页面如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%

String id = request.getParameter("id");
//取得id参数值

String user = request.getParameter("user");
//取得user参数值

String pwd = request.getParameter("pwd");
//取得pwd参数值

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>这是处理页面</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<%String message = request.getAttribute("result").toString();%>

<%out.print(message);%>

</body>

</html>

3.获取cookie

request对象的getCookies()方法可以获取cookie中的内容

request对象的getCookis( )方法的语法格式如下:

request.getCookie();

范例:

通过cookie保存并读取用户信息

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ page import="java.net.URLDecoder"  %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>使用request对象管理作用中的属性</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<%

Cookie[] cookies = request.getCookies();

String user = "";

String date = null;

if(cookies != null)

{

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

{

if(cookies[i].getName().equals("mrCookie"));

user = URLDecoder.decode(cookies[i].getValue().split("#")[0]);
//获取用户名

date = cookies[i].getValue().split("#")[1];

}

}

if("".equals(user)&&"".equals(date))

{

%>

游客您好,欢迎初次光临

<form action = "deal.jsp" method = "post">

<center>

请输入姓名:<input name="user" type="text" value ="">

<input type="submit" value="确定">

</center>

</form>

<%

}else{

%>

欢迎[<b><%=user%></b>]再次光临<br/>

您注册的时间是:<%=date %>

<%

}

%>

</body>

</html>

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ page import="java.net.URLEncoder"" %>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<%

String id = request.getParameter("id");
//取得id参数值

String user = request.getParameter("user");
//取得user参数值

String pwd = request.getParameter("pwd");
//取得pwd参数值

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<base href="<%=basePath%>">

<title>写入cookie</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<%

request.setCharacterEncoding("GB18030");

String use = URLEncoder.encode(request.getParameter("user"),"UTF-8");

Cookie cookie = new Cookie("mrCookie",use+"#"+new java.util.Date().toLocaleString());

cookie.setMaxAge(60*60*24*30);

response.addCookie(cookie);

%>

<script type="text/javascript">

window.location.href="index.jsp";

</script>

</body>

</html>

时间: 2024-08-08 01:29:41

JSP详细篇的相关文章

JSP详细篇——EL表达式(二)

EL的隐含对象 为了能够获得Web应用中的是相关数据,EL提供了11个隐含对象,这些对象类似于JSP的内置对象,也是直接通过对象名进行操作.在EL的隐含对象中,除了PageContext是JavaBean对象,对应于javax.servlet.jsp.PageContext类型外,其他的隐含对象都对应于java.util.Map类型.这些隐含对象可以分为页面上下文对象.访问作用域范围的隐含对象和访问环境信息的隐含对象3种.下面分别进行详细介绍. 1.页面上下文对象 页面上下文对象为pageCon

JSP详细篇——JDBC操作数据库(二)

删除数据 范例: 在查询所有图书信息的页面中,添加删除图书信息的超链接,通过Servlet实现对数据的删除操作 (1)在book_list.jsp中,增加删除图书信息的超链接,将连接的地址指向DeleteServlet. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextP

JSP详细篇——application

application对象 application对象用于保存所有应用程序中的共有数据.它在服务器启动时自动创建,在服务器停止时自动销毁.当application对象没有被销毁时,所有用户都可以共享该application对象.与session相比,application 对象的生命周期更长,类似于"全局变量" 1.访问应用程序初始化参数 application提供了对应用程序初始化参数进行访问的方法.应用程序初始化参数在web.xml文件中进行设置,web.xml文件位于Web应用所

JSP详细篇——out

out对象 out对象用于在web浏览器上输出信息,并且管理应用服务器上的输出缓冲区.在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中残留的数据,为其他输出让出缓冲空间.待数据输出完成后,要及时关闭输出流. 1.向客户端输出数据 out对象可以输出各种数据类型的数据,在输出非字符串时,会自动将其转换为字符串.out提供print()和println()两种向页面输出信息. print()方法 使用print()方法向客户端输出信息相当于使用JSP表达式 范例: <% out

JSP详细篇——Ajax

Ajax技术 一.Ajax开发模式与传统开发模式的比较 传统的Web开发模式中,页面中用户的每一次操作都会触发一次返回Web服务器的HTTP请求,服务器进行相应的处理(获得数据.运行与不同的系统会话)后,返回一个HTML页面给客户端 在Ajax应用中,页面中用户的操作将通过Ajax引擎与服务器端进行通信,然后将返回的结果提交给客户端页面的Ajax引擎,再由Ajax引擎来决定将这些数据插入到页面的指定位置 二.Ajax技术的使用 1.XMLHttpRequest对象 Ajax使用的技术中,最核心的

JSP详细篇——Servlet(二)

Servlet开发 1.Servlet创建 Servlet创建很简单,主要有两种方法:一是创建一个普通的Java类使其继承HttpServlet类,在手动配置web.xml文件注册Servlet对象.另一种是直接通过IDE继承开发工具进行创建. 2.Servlet配置 (1)声明Servlet对象 在web.xml中,通过<servlet>标签声明一个Servlet对象.再此标签下主要包含两个子元素,分别为:<servlet-name>和<servlet-class>.

JSP详细篇——session

session对象 通过session可以在应用程序的Web页面之间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到浏览器关闭.但是在一个会话中,客户端长时间不向服务器发出请求,session会自动消失.这个时间取决于服务器,可以通过程序进行修改. 1.创建及获取客户的会话 通过session的setAttribute()和getAttribute()方法实现. setAttribute()方法的语法格式: session.setAttribute(String name,Objec

JSP详细篇——Java Web的数据库操作

Java Web的数据库操作 JDBC技术 JDBC简介 JDBC是Java程序曹祖数据库的API,也是Java程序与数据库交互的一门技术.JDBC是java操作数据库的规范,由一组用Java语言编写的类和接口组成,他对数据库的操作提供了基本的方法.使用JDBC操作数据库,需要数据库厂商提供数据库的驱动程序. JDBC在Java程序与数据库之前起到了桥梁的作用,有了JDBC就可以方便的与各种数据库进行交互,不必为某一个特定的数据库指定专门的访问程序. JDBC连接数据库的过程 JDBC操作数的开

JSP详细篇——Servlet过滤器和监听器(二)

4.字符编码过滤器 在Java Web开发中,由于Web容器内部所使用的编码格式并不支持中文,所以,处理浏览器请求的中文数据会出现乱码. Web容器使用的编码格式是ISO-8859-1,所以在Web应用的业务处理中也会使用ISO-8859-1的编码格式.虽然浏览器提交请求使用的中文编码格式是UTF-8,但是经业务处理中的ISO-8859-1编码,就会出现乱码.在开发中,处理此问题的方法是:通过过滤器来处理字符编码. 范例: 实现图书信息的添加功能,并创建字符编码过滤器,避免中文乱码出现. (1)