java web 开发 第4章 JSP 内置对象

目录

request对象

获取用户提交的信息

1. 获取GET请求参数:

2. 获取POST请求参数:

处理汉字信息

 常用方法举例

response对象

动态响应contentType属性

response的HTTP文件头

response重定向

session对象

out对象

application对象


request对象

request对象是在Web开发中常用的对象,表示HTTP请求。它包含了请求的方法、URL、HTTP头部和HTTP正文等信息。

获取用户提交的信息

在JSP中获取用户提交的信息,可以通过内置对象request来实现。request对象是一个HttpServletRequest类型的对象,它包含了客户端提交的请求信息,如请求方式、请求头、请求参数等。可以通过以下方法来获取用户提交的信息:

1. 获取GET请求参数:

可以通过request对象的getParameter()方法来获取GET请求参数,例如:
 

<%
    String keyword = request.getParameter("keyword");
%>

在上面的代码中,当用户访问/search?keyword=java时,就可以获取到keyword参数的值为java。

2. 获取POST请求参数:

可以通过request对象的getParameter()方法来获取POST请求参数,例如:
 

<%
    String username = request.getParameter("username");
    String password = request.getParameter("password");
%>

在上面的代码中,当用户提交一个POST请求时,就可以获取到username和password参数的值。

处理汉字信息

用户提交的信息中如果含有汉字字符或其他非ASCII字符的信息,就必须进行特殊的处理方式,防止出乱码现象。

● 处理汉字信息

JSP 页面文件的编码为 utf-8 编码。
内置对象 request 在获取信息之前调用 setCharacterEncoding 方法设置编码为 utf-8 (默认是 iso-8859-1 )就可以避免乱码现象

 

代码如下:

request.setCharacterEncoding("utf-8");

 常用方法举例

1. getRequestURL():获取客户端请求的URL地址,不包括参数部分。
 

StringBuffer url = request.getRequestURL();

2. getParameter():获取指定参数名的参数值,支持中文参数。

String name = request.getParameter("name");

3. getParameterValues():获取指定参数名的所有参数值,返回一个字符串数组。
 

String[] hobbies = request.getParameterValues("hobby");

4. getMethod():获取客户端请求的HTTP方法,如GET、POST等。

String method = request.getMethod();

5. getHeader():获取指定请求头的值,如User-Agent、Referer等。

String userAgent = request.getHeader("User-Agent");

6. getRemoteAddr():获取客户端的IP地址。

String ipAddr = request.getRemoteAddr();

7. getSession():获取客户端的会话对象,如果不存在则创建一个新的会话。

HttpSession session = request.getSession();

8. getRequestDispatcher():获取请求转发器对象,用于将请求转发到其他Servlet或JSP页面。

RequestDispatcher dispatcher = request.getRequestDispatcher("/otherServlet");

9. getServletContext():获取Servlet上下文对象,用于获取Web应用的全局信息。

ServletContext context = request.getServletContext();

response对象

动态响应contentType属性

在JSP中,可以通过设置响应头的contentType属性来动态地指定响应内容的类型。contentType属性告诉浏览器服务器返回的内容类型,浏览器会根据contentType属性来判断如何处理响应内容。

在JSP中,可以通过response对象的setContentType()方法来设置contentType属性。下面是一个示例代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>动态响应contentType属性</title>
</head>
<body>
    <%-- 设置响应内容类型为JSON --%>
    <% response.setContentType("application/json;charset=UTF-8"); %>
    <%-- 输出JSON格式的数据 --%>
    <% out.print("{\"name\":\"张三\",\"age\":20}"); %>
</body>
</html>

responseHTTP文件头

在JSP中,可以通过response对象的setHeader()方法来设置HTTP响应头。HTTP响应头是Web服务器向浏览器返回的一些元数据,包括响应状态码、响应内容类型、响应日期时间等。

下面是一些常用的HTTP响应头属性:

1. Content-Type:指定响应内容的类型,如text/html、application/json等。

2. Content-Disposition:指定响应内容的处理方式,如inline(在浏览器中显示)或attachment(下载到本地)。

3. Content-Length:指定响应内容的长度,单位为字节。

4. Cache-Control:指定响应内容的缓存策略,如no-cache、max-age等。

response重定向

在JSP中,可以通过response对象的sendRedirect()方法来实现重定向。重定向是指将用户请求重定向到另一个URL,相当于浏览器重新发起了一次请求。

重定向可以用于以下场景:

1. 跳转到其他网站或页面。

2. 刷新页面,避免重复提交表单。

3. 处理某些请求后,将用户重定向到另一个页面。

下面是一个示例代码,演示如何使用response对象的sendRedirect()方法实现重定向:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>重定向示例</title>
</head>
<body>
    <%-- 重定向到百度首页 --%>
    <% response.sendRedirect("https://www.baidu.com"); %>
</body>
</html>

session对象

在JSP中,session对象是一个重要的服务器端对象,用于在不同的请求之间共享数据。session对象可以存储任意类型的数据,包括基本数据类型、对象等。

session对象的生命周期从用户第一次访问网站开始,到用户关闭浏览器或session超时为止。在session有效期内,用户可以在不同的页面之间共享数据,方便实现用户登录、购物车等功能。

下面是一些常用的session对象方法:

1. setAttribute(String name, Object value):向session中存储一个属性,属性名为name,属性值为value。

2. getAttribute(String name):从session中获取指定属性名name的属性值。

3. removeAttribute(String name):从session中删除指定属性名name的属性值。

4. invalidate():使session失效,即删除session中的所有属性值,并释放session占用的资源。

下面是一个示例代码,演示如何使用session对象在不同的页面之间共享数据:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>使用Session对象</title>
</head>
<body>
    <%-- 存储用户信息到session中 --%>
    <% session.setAttribute("username", "张三"); %>
    <%-- 输出用户信息 --%>
    <p>欢迎您,<%= session.getAttribute("username") %>!</p>
    <%-- 跳转到另一个页面 --%>
    <% response.sendRedirect("anotherPage.jsp"); %>
</body>
</html>

在上面的代码中,我们首先通过session对象的setAttribute()方法向session中存储了一个属性,属性名为username,属性值为张三。然后,我们通过session对象的getAttribute()方法获取了该属性的值,并输出欢迎信息。

接下来,我们通过response对象的sendRedirect()方法将用户重定向到了另一个页面anotherPage.jsp。在另一个页面中,我们可以通过session对象的getAttribute()方法获取之前存储的属性值,实现数据共享。例如:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>使用Session对象</title>
 </head> <body> <%-- 输出用户信息 --%> <p>欢迎您,<%= session.getAttribute("username") %>!</p> </body> </html>

在上面的代码中,我们通过session对象的getAttribute()方法获取了之前存储的属性值,并输出欢迎信息。需要注意的是,只有在同一个session中,才能共享数据。如果用户关闭了浏览器或session超时,数据将丢失。

out对象

out对象是一个输出流,用来向用户端输出数据。在前面的许多例子里曾多次使用out对象进行数据的输出。out对象可调用如下的方法用于各种数据的输出

例如

out.print(boolean)或out.println(boolean) 用于输出一个布尔值。

out.print(char) 或out.println(char) 输出一个字符。

out.print(double) 或out.println(double)输出一个双精度的浮点数。

out.print(fload) 或out.println(float)用于输出一个单精度的浮点数。

out.print(long) 或out.println(long)输出一个长整型数据。

out.print(String) 或out.println(String)输出一个String对象的字符序列。

方法printlnprint的区别是:println会向缓存区写入一个换行,而print不写入换行。但是浏览器的显示区域目前不识别println写入的换行,如果希望浏览器显示换行,应当向浏览器写入"<br>"实现换行

application对象

在JSP中,application对象是一个全局的服务器端对象,用于在整个Web应用程序中共享数据。application对象的生命周期从Web应用程序启动开始,到Web应用程序关闭为止。在application有效期内,任何用户都可以访问和修改application对象中的数据。

下面是一些常用的application对象方法:

1. setAttribute(String name, Object value):向application中存储一个属性,属性名为name,属性值为value。

2. getAttribute(String name):从application中获取指定属性名name的属性值。

3. removeAttribute(String name):从application中删除指定属性名name的属性值。

4. getServletContext():获取ServletContext对象,可以通过该对象获取Web应用程序的配置信息、初始化参数等。

下面是一个示例代码,演示如何使用application对象在整个Web应用程序中共享数据:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>使用Application对象</title>
</head>
<body>
    <%-- 存储全局计数器到application中 --%>
    <% 
        int count = 1;
        if(application.getAttribute("count") != null) {
            count = (int) application.getAttribute("count") + 1;
        }
        application.setAttribute("count", count);
    %>
    <%-- 输出全局计数器的值 --%>
    <p>当前访问次数为:<%= application.getAttribute("count") %></p>
</body>
</html>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值