jsp内置对象(2)-request

1.3 request对象

1.3.1访问请求参数

在 JSP 中,请求参数可以通过 request 对象来获取。我们可以使用如下方式从 request 对象中获取请求参数:


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

在上面的代码中,getParameter() 方法接收一个字符串类型的参数,该参数是要获取的请求参数的名称。该方法会返回一个字符串,即请求参数的值。

例如,在以下 JSP 页面中,我们可以获取 name 请求参数的值:


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>获取请求参数</title>

</head>

<body>

    <% 

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

    %>

    <h1>Hello <%= name %>!</h1>

</body>

</html>

在这个例子中,我们使用了 <% %> 标签来嵌入 Java 代码,调用了 request.getParameter() 方法来获取 name 请求参数的值,并将其显示在页面中。

需要注意的是,如果请求参数不存在,则 getParameter() 方法会返回 null。因此,我们’需要在使用请求参数之前先进行非空判断,以避免出现空指针异常。

1…3.2在作用域中管理信息

在 JavaServer Pages (JSP) 中,可以使用 Servlet API 中的 HttpServletRequest 对象来获取客户端请求信息。HttpServletRequest 对象是一个接口,其实现类是由 Web 容器提供的。

当客户端发出请求时,Web 容器会创建 HttpServletRequest 对象,并将该对象传递给 JSP 页面。在 JSP 页面中,可以通过 request 对象来访问 HttpServletRequest 对象中的所有方法和属性。

request 对象是一种作用域对象,它可以在当前 JSP 页面中存储数据并与其他 JSP 页面共享数据。request 对象中存储的数据只在同一次请求内有效,一旦请求结束,数据就会被销毁。

例如,我们可以使用 request 对象在 JSP 页面之间传递信息,如下所示:

在第一个 JSP 页面中设置属性:


<%

    // 设置属性

    request.setAttribute("name", "John");

%>

在第二个 JSP 页面中获取属性:


<%

    // 获取属性

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

%>

除了 setAttribute() 和 getAttribute() 方法之外,HttpServletRequest 还提供了许多其他有用的方法,例如 getParameter()、getMethod()、getHeader() 等,这些方法可以帮助我们获取客户端请求的各种信息。

1.3.3获取cookie

在 JSP 中,我们可以通过 HttpServletRequest 对象获取客户端请求中包含的 Cookie,然后将其添加到 request 作用域中以方便其他 JSP 页面访问。

以下是一个示例代码:


<%

    // 获取 HttpServletRequest 对象

    HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();



    // 获取客户端请求中的所有 Cookies

    Cookie[] cookies = request.getCookies();



    // 将 Cookies 添加到 request 作用域中

    request.setAttribute("cookies", cookies);

%>

上述代码首先获取了 HttpServletRequest 对象,并使用它的 getCookies() 方法获取客户端请求中包含的所有 Cookie,然后使用 setAttribute() 方法将这些 Cookie 添加到 request 作用域中,以便其他 JSP 页面可以访问它们。

接着,在其他 JSP 页面中,我们可以通过 request 对象获取这些 Cookie,例如:


<%

    // 获取 request 中的 Cookies

    Cookie[] cookies = (Cookie[]) request.getAttribute("cookies");



    if(cookies != null){

        for(Cookie cookie : cookies){

            // 输出 Cookie 的名称和值

            out.println(cookie.getName() + ": " + cookie.getValue() + "<br>");

        }

    }

%>

上述代码首先获取了 request 对象中的 Cookies,然后遍历这些 Cookie 并输出它们的名称和值。

请注意,通过 request 作用域共享 Cookie 只适用于同一个 Web 应用程序中的 JSP 页面。如果您需要在不同的 Web 应用程序之间共享 Cookie,可以考虑使用 ServletContext 或 HttpSession 来存储和获取它们。

1.3.4解决中文乱码

在 JSP 中,如果客户端提交的表单中包含中文字符,那么在后台获取这些参数时可能会出现乱码问题。这个问题可以通过在 request 作用域中设置编码来解决。

以下是一个示例代码:


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

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

        <label for="name">姓名:</label>

        <input type="text" name="name" id="name">

        <br>

        <button type="submit">提交</button>

    </form>

</body>

</html>

上述代码展示了一个简单的表单页面,其中包含一个文本框用于输入姓名,并通过 POST 方法提交表单数据到 test.jsp 页面。

接下来,在 test.jsp 页面中,我们可以使用 request 对象获取客户端提交的参数,并设置编码来解决中文乱码问题,例如:


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%

    // 获取 request 对象

    request.setCharacterEncoding("UTF-8");



    // 获取客户端提交的参数

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



    // 输出参数值

    out.println("您输入的姓名是:" + name);

%>

上述代码首先设置了 request 对象的编码为 UTF-8,然后使用 getParameter() 方法获取客户端提交的 name 参数,并输出它的值。

请注意,在 JSP 中设置 request 对象的编码只适用于当前页面,如果在其他页面需要获取相同的参数时也需要进行编码设置。

1.3.5获取客户端信息

在 JSP 中,可以使用 HttpServletRequest 对象获取客户端的一些信息,例如客户端的 IP 地址、用户代理等。HttpServletRequest 对象是由 Servlet 容器创建并传递给 JSP 页面的,它包含了客户端请求的相关信息。

以下是一些获取客户端信息的示例代码:

  1. 获取客户端 IP 地址

<%

    // 获取客户端 IP 地址

    String ipAddress = request.getRemoteAddr();



    out.println("客户端 IP 地址:" + ipAddress);

%>

  1. 获取客户端浏览器类型

<%

    // 获取客户端浏览器类型

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

    

    out.println("客户端浏览器类型:" + userAgent);

%>

  1. 获取客户端请求方式

<%

    // 获取客户端请求方式

    String method = request.getMethod();

    

    out.println("客户端请求方式:" + method);

%>

  1. 获取客户端请求 URL

<%

    // 获取客户端请求 URL

    StringBuffer url = request.getRequestURL();

    

    out.println("客户端请求 URL:" + url);

%>

  1. 获取客户端请求参数

<%

    // 获取客户端请求参数

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

    

    out.println("客户端请求参数 name 的值为:" + name);

%>

上述代码中,我们使用了 HttpServletRequest 对象的 getRemoteAddr() 方法获取客户端的 IP 地址;使用 getHeader() 方法获取客户端浏览器类型;使用 getMethod() 方法获取客户端请求方式;使用 getRequestURL() 方法获取客户端请求 URL;使用 getParameter() 方法获取客户端请求参数。

请注意,在获取客户端信息时需要注意编码问题,可以通过设置 HttpServletRequest 对象的编码方式来解决。

1.3.6显示国际化信息

在 JSP 中,可以使用 ResourceBundle 类来显示国际化信息。ResourceBundle 是用于加载不同语言和区域的文本资源文件的类,它可以帮助我们实现国际化。

以下是一个示例代码:

  1. 创建资源文件

在项目中创建多个资源文件,例如:

MessageBundle.properties


greeting=Hello

MessageBundle_zh_CN.properties


greeting=你好

  1. 在 JSP 页面中使用 ResourceBundle 显示国际化信息

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%

    // 获取 request 对象

    HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();



    // 获取客户端的语言偏好设置

    String lang = request.getHeader("Accept-Language");



    // 根据客户端的语言偏好设置加载对应的资源文件

    ResourceBundle bundle = ResourceBundle.getBundle("MessageBundle", new Locale(lang));



    // 获取资源文件中的 greeting 属性值

    String greeting = bundle.getString("greeting");



    out.println(greeting);

%>

上述代码根据客户端的语言偏好设置加载对应的资源文件,并获取其中的 greeting 属性值进行输出。

在浏览器中访问该页面时,会根据浏览器的语言设置自动加载对应的资源文件,从而实现国际化。

请注意,在创建资源文件时需要按照规范进行命名,并使用 UTF-8 编码保存;在使用 ResourceBundle 类时需要注意参数的传递方式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值