目录
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字符的信息,就必须进行特殊的处理方式,防止出乱码现象。
● 处理汉字信息
代码如下:
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>
response的HTTP文件头
在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对象的字符序列。
方法println和print的区别是: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>