jsp隐式对象——输入/输出对象
1. 作用
主要是控制页面输出和输入,访问与所有请求和响应相关的信息
2. request对象
a. 作用
保存了用户提交的信息,通过调用该对象相应的方法可以获取用户提交的信息
b. 常用方法
1.String getParameter(String name);
2.String getParameterValues(String name);
3.Enumeration getParameterNames();
4.setAttribute(String name,Object o);
5.Object getAttribute(String name);
6.Session getSession(String name);
7.removeAttribute(String name);
8.setCharacterEncoding //设置请求数据的编码,只适用与post方法
9.getRequestDispatcher(String path);
c.访问请求参数
获取客户端提交的信息,request对象代表来自客户端的请求
1. String getParameter("XX"); //得到name的参数值
2. String[] getParameterValues("XX"); //得到name所有的参数值
3. String[] getParameterNames(); //得到所有参数名字
实例:getParameter(“XX”) 返回类型为String
/***requestInfo.jsp***/
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>输入数据界面</title>
</head>
<body>
<form action="requestInfo_deal.jsp">
用户名:<input type="text" name="username"><br>
密 码:<input type="password" name="password"><br>
<input type="submit" value="提交">
<input type="submit" value="取消">
</form>
</body>
</html>
/***requestInfo_deal.jsp***/
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>处理数据页面</title>
</head>
<body>
<h1>您刚才输入的内容是:</h1>
<%
String name = request.getParameter("username");
String password = request.getParameter("password");
out.println("姓名:参数名称:"+name);
out.println("密码:参数名称:"+password);
%>
</body>
</html>
实例:getParameterValues(“XX”) 返回类型为String[]
/***requestProduct.jsp***/
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>您的爱好为:</h1>
<form action="requestDeal.jsp" method="post">
<input type="checkbox" name="chekBox" value="Basketball">打篮球
<input type="checkbox" name="chekBox" value="Football">踢足球
<input type="checkbox" name="chekBox" value="Code">写代码
<input type="checkbox" name="chekBox" value="Games">打游戏
<br>
<input type="submit" value="提交">
<input type="reset" value="清除">
</form>
</body>
</html>
/***requestDeal.jsp***/
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<html>
<head>
<title>数据处理</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String[] chekBoxes = request.getParameterValues("chekBox");
out.print("您的爱好有:");
if (chekBoxes!=null){
for (int i = 0;i<chekBoxes.length;i++){
if (chekBoxes[i].equals("Basketball")){
out.print("打篮球");
}
if (chekBoxes[i].equals("Football")){
out.print("踢足球");
}
if (chekBoxes[i].equals("Code")){
out.print("写代码");
}
if (chekBoxes[i].equals("Games")){
out.print("打游戏");
}
}
}
%>
</body>
</html>
实例:getParameterNames() 返回类型为枚举类型Enumeration
/***requestInfo.jsp***/
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>输入数据界面</title>
</head>
<body>
<form action="requestDemo2.jsp">
用户名:<input type="text" name="username"><br>
密 码:<input type="password" name="password"><br>
<input type="submit" value="提交">
<input type="submit" value="取消">
</form>
</body>
</html>
/***requestDemo2.jsp***/
<%
Enumeration enumeration = request.getParameterNames();//获取的是有name参数的value
while (enumeration.hasMoreElements()){ //enumeration.hasMoreElements()获取Enumeration中参数的个数
String pName = (String)enumeration.nextElement();
String pValue = request.getParameter(pName);
out.print("参数名称"+ pName+"<br>");
out.print("参数内容"+ pValue+"<br>");
}
%>
</body>
</html>
*若如页面出现中文乱码的情况,在request.getParameter()前面加上request.setCharacterEncoding(“UTF-8”);
d. 在作用域中管理属性
在转发的时候,需要再转发的后面带一些数据带到转发页面处理,用
request.setAttribute("key",Object);//key为传值的键,用于获取参数值,为String类型.Object是需要保存到 request里面的
在转发页面获取此数据用
request.getAttribute("key");
实例:
<body>
<%
request.setAttribute("username","张三");
request.setAttribute("hobby","打篮球");
%>
<%
用户名:<%=request.getAttribute("username"); %>
爱好:<%=request.getAttribute("hobby"); %>
%>
</body>
e. getParameter()与getAttribute()的区别
- getParameter返回值是String,获取客户端提交的表单中的值
- getAttribute返回值是任意数据类型,获取服务器设置的数据
f. 获取Cookie
1. cookie的定义
Cookie是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间的传递。可以保存用户的登录信息
2. cookie获取
Cookie[] cookie = request.getCookies();
g. 获取客户信息的方法
3. response对象
a. 定义:
response对象处理jsp生成响应并发送给客户端。事务处理完之后response对象将被销毁
b. 常用方法
1. flushBuffer(); //强制把当前缓冲区的所有内容发送到客户端
2. getBufferSize(); //获取实际缓冲区的大小
3. getCharacterEncoding(); //获取响应的字符编码格式
4. setCharacterEncoding(); //设置响应的字符编码格式
5. getContentType(); //获取响应的内容MIME类型
6. setContentType(); //设置响应的内容MIME类型
7. getOutputStream(); //获取客户端的输入流
8. sendError(); //向客户端发送错误信息
9. setContentLength(); //设置响应内容的长度(字节数)
c. response重定向网页
1.作用
将客户端请求重定向到一个不同的页面
response.sendRedirect(login.jsp?param=aaa&...);
2.response.sendRedirect()与 jsp:forward 的区别
a. response.sendRedirect():在客户端跳转,浏览器会根据重定向的url发起请求。request和response都将重新产生
b. jsp:forward:在服务器端跳转,浏览器url不变,request无法重新产生,所以可以用request来传递参数
c. 实例
/***sendRedirect.jsp***/
<body>
<form mothod="post">
输入用户名:
<input type="text" name="name"/>
<input type="submit" value="login"/>
</form>
<%
String name = request.getParameter("name");
if(name!=null){
request.sendRedirect("redirect.jsp?sendname="+name);
//?sendname=是给重定向后的页面传值
out.print("重定向后的语句!");//用来区分jsp:forward
}
%>
</body>
/***redirect.jsp***/
<body>
<%
String sendname = request.getParameter("sendname"); //接收重定向传过来的值
%>
用户名:<%=sendname %>
</body>
d. 设置HTTP响应报头
实例:
<%@ page contentType="text/html;charset=gb2312"%>
<body>
<%@include file="work.html"%>
<%
String str1 = request.getParameter("word");
String str2 = request.getParameter("excel");
if(str1!=null && str1.equals("word")){
response.setContentType("application/msword;charset=gb2312");
}
if(str2!=null && str2.equals("excel")){
response.setContentType("application/x-msexcel;charset=gb2312");
}
%>
</body>
<html>
<head>
<title>response.setContentType的实例</title>
</head>
<body>
<p>
当前页面保存为哪一类的文档
</p>
<form method="get" name="form">
<input type="submit" value="word" name="word"/>
<input type="submit" value="excel" name="excel"/>
</form>
</body>
</html>
response.setHeader("refresh","time","url");//refresh为刷新,time为刷新的时间。url刷新后跳转的页面
e.设定状态显示码
f.保存客户端信息
1. 方法: addCookie(Cookie cookie);
2. 获取:request.getCookie()获取
3. 作用:保存用户的个性化信息,为下一次访问提供方便
4.out对象(JspWriter)
a. 定义
1. 表示输出流,PrintWriter类型
2. out对象是javax.servlet.jsp.PrintWriter的一个对象,能把信息发送给客户端的浏览器
3. Write只能输出和字符相关的信息,print可以输出任何类型的信息
b. out对象的方法
c. out对象的特点