httpServletRequest(request)
客户端向服务器端发送附加消息的
- 获取请求行消息
Post /login.jsp http1.1
System.out.println(request.getMethod());
System.out.println(request.getProtocol());
System.out.println(request.getRemoteHost());
- 获取请求消息头
有对应的请求头方法 就直接访问 ,如果没有用getHeader(“请求头”)
request.getHeader("Accept")
- 获取请求参数
1) post表单数据
String userName=request.getParameter("userName");
System.out.println(userName);
String[] favs=request.getParameterValues("fav");
2)get请求参数(查询参数)
http://localhost:8080/Request/hyn?userName=tongtao&aihao=1
a :地址栏发起的请求
b:超链接发起的请求
post 和get的区别:
get请求参数信息可以直接显示在地址栏中,明文,长度受限
post请求参数信息长度不受限制,相对安全
- 通过Request对象传递数据
利用Request对象保存传递的参数信息(一次请求范围内可见)
利用ServletContext对象传递参数信息(全局见) //传递参数到客户端(main.jsp)
request.setAttribute("userName", userName);
ServletContext sc=this.getServletContext();
sc.setAttribute("fav", favs);
RequestDispatcher rd=request.getRequestDispatcher("/main.jsp");
rd.forward(request,response);
- RequestDispatcher接口及请求转发与包含 请求转发(在当前服务器中的资源,将当前的请求进行转发,上一次请求的延续):
RequestDispatcher rd=request.getRequestDispatcher("/main.jsp");
rd.forward(request, response);
操作代码:
login.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<a href="hyn?userName=ttsb&aihao=1">denglu</a>
<form action="hyn" method="post">
用户名:<input type="text" name="userName"><br>
爱好:<input type="checkbox" name="aihao" value="1">音乐
<input type="checkbox" name="aihao" value="2">舞蹈
<input type="submit" value="login">
</form>
</body>
</html>
Servlet部分:
package Request;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class hyn
*/
@WebServlet("/hyn")
public class hyn extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public hyn() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
System.out.println(request.getMethod());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//doGet(request, response);
//1.获取响应状态码
System.out.println("状态码:"+response.getStatus());
//设置响应头,获取响应头内容
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//3.设置响应内容
PrintWriter out=response.getWriter();
out.append("zhangsan,list");
//4.获取请求信息
System.out.println("请求方法:"+request.getMethod());
System.out.println("地址:"+request.getRemoteHost());
System.out.println("地址:"+request.getRemoteAddr());
//5.请求头信息获取
System.out.println("请求头信息:"+request.getHeader("Accept"));
//6.请求参数获取
String userName=request.getParameter("userName");//请求参数getParameter方法
System.out.println(userName);
String[] favs=request.getParameterValues("aihao");
for(String fav:favs){
System.out.println(fav);
}
}
}
method=“get”:
method=“post”: