目录
理解 : JSP内置对象在JSP页面中可以直接使用,不需要声明或创建对象,有些对象可以在JSP页面的Java程序片和表达式部分使用,在Servlet中不能直接使用(request和respons两个对象除外),其他相关内置对象可以通过request对象获取。
4.1request对象
- 该对象是“HttpServletRequest”接口的一个实现类对象,该对象表示客户端向服务端发送的一次请求;
- 该对象属于“作用域”对象,它的作用域仅限于一次请求期:该作用域从客户端向服务端发送请求开始,服务端接受到客户端请求后终止(我们可以通过请求转发将该请求延长),在request对象中存放的数据只能在其作用域内起作用。
1. request对象可以通过getParameter()方法获取用户提交的信息,例如通过request.getParameter("username")可以获取提交的用户名。
2. 处理汉字信息时,需要注意编码问题。默认情况下,JSP页面使用的编码方式为ISO-8859-1,而汉字通常使用UTF-8编码。要正确处理汉字信息,可以在JSP页面中设置编码方式,例如:
<%@ page contentType="text/html; charset=UTF-8" %>
3. 常用的request对象方法包括: - getParameter():获取指定参数的值。 - getParameterValues():获取具有多个值的参数的值。 - getParameterMap():以Map形式返回所有参数。 - getAttribute():获取指定属性的值。 - setAttribute():设置指定属性的值。 - getServerName():获取服务器的名称。 - getServerPort():获取服务器的端口号。
4. 如果要在HTML标记中输出动态内容,需要对特殊字符进行转义,例如将"<"转义为"<",将">"转义为">"。可以使用JSP中的JSTL标签库中的c:out标签进行转义输出,例如:
<c:out value="${content}" />
5. 处理超链接时,可以在URL中传递请求参数,例如:
<a href="page.jsp?username=Tom">点击这里</a>
在page.jsp页面中可以使用request.getParameter("username")方法获取传递的用户名。另外,也可以使用JSP中的JSTL标签库中的c:url标签生成URL链接,例如:
<c:url value="page.jsp" var="url">
<c:param name="username" value="Tom" />
</c:url>
<a href="${url}">点击这里</a>
这样可以生成一个包含请求参数的URL链接,并且可以避免手动拼接URL时的错误。
4.2response对象
- 该对象属于 HttpServletResponse 接口的一个实例,该对象表示服务端向客户端发送的一次回应
1. response对象中的contentType属性是用于设置响应结果的MIME类型,也称为内容类型。例如,设置contentType为"text/html"表示响应结果是HTML文本。可以使用setContentType方法来设置contentType,例如:
response.setContentType("text/html");
2. response对象中的HTTP文件头可以使用setHeader()方法设置,常用的HTTP文件头包括: - Content-Disposition:用于设置响应结果的文件名和下载方式。 - Expires:用于设置响应结果的过期时间。 - Cache-Control:用于设置缓存控制信息。 - Set-Cookie:用于设置Cookie值。 例如,可以通过以下代码设置Content-Disposition文件头:
response.setHeader("Content-Disposition", "attachment;filename=file1.txt");
这样就可以将响应结果作为文件下载,并指定下载的文件名。 3. response对象中的重定位功能可以通过setHeader()方法设置HTTP响应状态码为302,并设置Location文件头来实现。例如,可以使用以下代码将请求重定向到新的URL:
response.setStatus(302);
response.setHeader("Location", "http://www.example.com/newPage.jsp");
这样就可以将当前请求重定向到http://www.example.com/newPage.jsp。注意,在使用重定位功能时必须设置HTTP状态码为302,否则可能无法生效。
4.3session对象
4.3.1seeion对象的id
Session对象的ID:Session ID 是一个由Web服务器生成的唯一标识符,用于标识特定的会话。当客户端与服务器建立连接时,服务器会为该连接生成一个Session ID,并将其存储在浏览器的cookie中。下面是一个获取Session ID 的示例代码:
HttpSession session = request.getSession();
String sessionId = session.getId();
out.println("Your session ID is: " + sessionId);
%>
4.3.2seeion对象与URL重写
Session对象与URL重写:另一种获取Session ID 的方法是使用URL重写。在URL重写中,服务器将Session ID 添加到每个URL中,然后将响应发送回客户端。客户端接收到响应后,将使用包含Session ID 的URL 发送后续请求。下面是一个使用URL重写获取Session ID 的示例代码:
HttpSession session = request.getSession();
String sessionId = session.getId();
String url = response.encodeURL("next.jsp");
out.println("<a href=\"" + url + "\">Click here</a>");
%>
4.3.3seeion对象存储数据
Session对象存储数据:Session对象可以用于在整个会话期间存储和检索数据。可以使用setAttribute() 方法将数据存储在Session对象中,然后使用getAttribute() 方法检索这些数据。下面是一个将用户名和密码存储在Session对象中的示例代码:
String username = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session = request.getSession();
session.setAttribute("username", username);
session.setAttribute("password", password);
%>
在上述代码中,我们从请求对象中获取用户名和密码,并使用Session对象将其存储在会话中
4.3.4seeion对象的生存期限
Session对象的生存期限:Session对象有一个生命周期,即在一定时间内,如果没有任何活动,则会自动终止。这个时间可以通过web.xml文件中的session-timeout配置进行设置。例如,下面的代码将Session对象的生存期限设置为60分钟:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
或者,可以使用setMaxInactiveInterval() 方法设置Session对象的生存期限,以秒为单位,如下所示:
HttpSession session = request.getSession();
session.setMaxInactiveInterval(60 * 60); //设置为1小时
%>
在上述代码中,我们使用setMaxInactiveInterval() 方法将Session对象的生存期限设置为1小时。
4.4application对象
4.4.1application对象的常用方法
application对象是在JSP中的一个内置对象,代表的是整个Web应用程序。它的常用方法包括:
1. getAttribute(String name):获取指定名字的属性值。
2. setAttribute(String name, Object value):设置指定名字的属性值。
3. removeAttribute(String name):删除指定名字的属性值。
4. getInitParameter(String name):获取指定名字的初始化参数值。
5. getServletContext():获取ServletContext对象。
4.4.2application留言板
以下是实现一个application留言板的代码示例,通过使用application对象来存储和获取留言信息:
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<%!
ArrayList<String> messages = new ArrayList<String>();
%>
<!DOCTYPE html>
<html>
<head>
<title>Application Message Board</title>
</head>
<body>
<h1>Application Message Board</h1>
<%
String message = request.getParameter("message");
if (message != null && message.trim().length() > 0) {
messages.add(message);
application.setAttribute("messages", messages);
}
else {
messages = (ArrayList<String>) application.getAttribute("messages");
if (messages == null) {
messages = new ArrayList<String>();
}
}
%>
<form action="" method="post">
<label for="message">Enter a message:</label>
<input type="text" name="message" id="message">
<input type="submit" value="Post Message">
</form>
<hr>
<ul>
<% for (String msg : messages) { %>
<li><%= msg %></li>
<% } %>
</ul>
</body>
</html>
总结:以上就是今天要讲的内容,本文仅仅简单介绍了内置对象的定义使用,希望能与大家一起努力加油呀~