JSP内置对象

文章目录

  • 4.1request对象

  • 4.2response对象

  • 4.3session对象

  • 4.4application对象

  • 4.5out对象

  • 总结

4.1request对象

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对象

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>

在上述代码中,首先定义一个ArrayList来存储留言信息,然后通过判断请求的参数是否为null来决定是新增一条留言还是获取所有留言信息。如果新增留言,则将留言添加到ArrayList中,并将其保存在application对象中;如果请求参数为null,则从application对象中获取ArrayList中的留言信息。最后,将所有留言信息显示在页面上。


总结

    HTTP通信协议是用户与服务器之间一种提交(请求)信息与响应信息(request/response) 的通信协议。在JSP中,内置对象request封装了用户提交的信息,request对象获取用户提交信息的最常用的方法是getParameter(String s)。response 对象对用户的请求作出动态响应,向用户端发送数据。
    HTTP协议是一种无状态协议。一个用户向服务器发出请求(request),然后服务器返回响应(response),但不记忆连接的有关信息。所以,Tomcat服务器必须使用内置
session 对象(会话)记录有关连接的信息。同一个用户在某个Web 服务目录中的
session对象是相同的;同一个用户在不同的Web服务目录中的session对象是互不相
同的;不同用户的session对象是互不相同的。
一个用户在某个Web服务目录的session 对象的生存期限依赖于用户是否关闭浏览
器,依赖于session对象是否调用invalidate(方法使得session无效或session对象达
到了设置的最长的“发呆”状态时间。
内置对象application由服务器负责创建,每个Web服务目录下的application对象被访
问该服务目录的所有的用户共享;不同Web服务目录下的application互不相同。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值