JSP 에서 request 와 response 의 용법 에 대한 상세 한 설명
개요:
이 두 대상 을 배우 기 전에 우 리 는 http 프로 토 콜 에 대한 기본 적 인 이 해 를 가지 고 있 을 것 입 니 다.http 프로 토 콜 을 잘 모 르 면 http 프로 토 콜 에 대한 소 개 를 볼 수 있 습 니 다.사실 request 와 response 의 사용 은 대부분 http 프로 토 콜 에 대한 작업 이기 때문이다.
요청 대상 소개
우 리 는 먼저 request 대상 에서 소개 합 니 다.
http 프로 토 콜 이 요청 서버 의 형식 을 정의 한 것 을 알 고 있 습 니 다:
요청 줄
요청 헤더
스페이스 바
요청 체(get 요청 체 없 음)
자,여기 서 우 리 는 상세 하 게 소개 하지 않 겠 습 니 다.우 리 는 몇 개의 응용 만 보면 됩 니 다.어렵 지 않 습 니 다.
응용 1 요청 헤더 가 져 오기
/**
* HTTP
* String getHeader(String name),
* int getIntHeader(String name), int
* long getDateHeader(String name),
* Enumeration<String> getHeaders(String name),
*
*
*/
public class CServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String ip = request.getRemoteAddr();// IP
String method = request.getMethod();//
System.out.println(ip);
System.out.println(method);
getLiuLanQi(request);
protectMethod(request, response);
}
//
public void protectMethod(HttpServletRequest request,
HttpServletResponse response) {
String url = request.getHeader("referer");
System.out.println(url);
if(url != null && url.equalsIgnoreCase("http://localhost:8080/day10/MyHtml.html") ) {
System.out.println("hi");
}
else {
response.setStatus(302);
response.setHeader("Location","/day10/MyHtml.html");
System.out.println(" ");
}
}
//
public void getLiuLanQi(HttpServletRequest request) {
String user = request.getHeader("User-Agent");
if(user != null) {
String userNoC = user.toLowerCase();
if(userNoC.contains("chrome")) {
System.out.println(" : " );
}
else if(userNoC.contains("firefox/")) {
System.out.println(" : ");
}
else {
System.out.println(" :IE");
}
}
else {
System.out.println("null");
}
}
}
2 URL 가 져 오기 경로 적용
/**
* URL
http://localhost:8080/day10_2/AServlet?username=xxx&password=yyy
> String getScheme(): ,http
> String getServerName(): ,localhost
> String getServerPort(): ,8080
> *****String getContextPath(): ,/day10_2
> String getServletPath(): Servlet ,/AServlet
> String getQueryString(): , 。username=xxx&password=yyy
> String getRequestURI(): URI, +Servlet 。/day10_2/AServlet
> String getRequestURL(): URL, 。http://localhost:8080/day10_2/AServlet
*
*
*/
public class DServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(request.getScheme());
System.out.println(request.getServerName());
System.out.println(request.getServerPort());
System.out.println(request.getContextPath());
System.out.println(request.getServletPath());
System.out.println(request.getQueryString());
System.out.println(request.getRequestURI());
System.out.println(request.getRequestURL());
}
}
응용 3 요청 매개 변수 가 져 오기
/**
*
* : , !
> *****String getParameter(String name): ,
> String[] getParameterValues(String name): ,
> Enumeration<String> getParameterNames():
> *****Map<String,String[]> getParameterMap(): , key ,value 。
*
*/
public class EServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");// ,
String name = request.getParameter("name");
String password = request.getParameter("password");
String[] aihao = request.getParameterValues("aihao");
response.setHeader("content-type", "text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.println("name:" + name + "<br/>");
pw.println("password:" + password + "<br/>");
pw.print("aihao");
for (int i = 0; i < aihao.length; i++) {
switch (i) {
case 1:
pw.print(" ");
break;
case 2:
pw.print(" ");
break;
case 3:
pw.print(" ");
break;
default:
break;
}
}
pw.close();
}
}
<!-- html -->
<html>
<head>
<title>denglu.html</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="/day10/EServlet" method="post"><!-- post -->
:<input type="text" name="name"/><br/>
:<input type="password" name="password"><br/>
:<input type="checkbox" name="aihao" value="1"/>
<input type="checkbox" name="aihao" value="2"/>
<input type="checkbox" name="aihao" value="3"/>
<input type="submit" value=" ">
</form>
</body>
</html>
응용 4 설정 request 대상 속성같은 응용 프로그램 servlet 간 에 전달 할 만 한 가치 가 있 고 퍼 가기 도 사 용 했 습 니 다.
/**
*
** request
Servlet :request、session、application, :
> void setAttribute(String name, Object value)
> Object getAttribute(String name)
> void removeAttribute(String name);
> request.setAttribute()、request.getAttribute() ! Servlet setAttribute() , Servlet getAttribute() 。
*
*/
public class FServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("name","weijinhao");
request.setAttribute("password", "123");
RequestDispatcher rd = request.getRequestDispatcher("/GServlet");
rd.forward(request, response);
}
}
public class GServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = (String)request.getAttribute("name");
String password = (String)request.getAttribute("password");
response.setHeader("content-type", "text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.println("name:" + name + "<br/>");
pw.println("password:" + password + "<br/>");
pw.close();
}
}
자,request 의 용법 은 대체로 이것 입 니 다.response 대상 을 살 펴 봅 시다.
response 대상 사용
http 프로 토 콜 은 응답 브 라 우 저의 형식 을 정의 합 니 다:
응답 줄
응답 헤드
스페이스 바
호응 체
response 대상 의 대체적인 응용 은 응답 코드 를 설정 하고 응답 헤드 를 설정 하 며 응답 본문 을 설정 하 는 데 사 용 됩 니 다.
응용 1 설정 응답 본문
/**
* response
* 1,
* 2,
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//String n = "hello javaweb";
//byte[] b = n.getBytes();
//
/*ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(b);
outputStream.close();*/
//
/*PrintWriter p = response.getWriter();
p.write(n);
p.close();*/
//commoms
FileInputStream fileInputStream = new FileInputStream("C:/Users/74087/Desktop/6226354_994604.jpg");
byte[] b = IOUtils.toByteArray(fileInputStream);
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(b);
outputStream.close();
}
}
응용 2 응답 코드 와 응답 헤드 설정
/**
*response
*1, sendError(int sc)//
*2, sendError(int sc, java.lang.String msg) //
*3, setStatus(int sc) //
*response
*1, setDateHeader(java.lang.String name, long date)
*2, setHeader(java.lang.String name, java.lang.String value)
*3, setIntHeader(java.lang.String name, int value)
*
* addDateHeader(java.lang.String name, long date)
* addHeader(java.lang.String name, java.lang.String value)
* addIntHeader(java.lang.String name, int value)
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//sendNum(response);
//sendRe(response);
//refresh(response);
//noCache(response);
}
//
public void noCache(HttpServletResponse response) {
response.setHeader("Cache-Control","no-cache");
response.setHeader("pragma","0");
response.setHeader("expires","no-cache");
}
//
public void refresh(HttpServletResponse response) {
response.setHeader("refresh", "5;url=http://www.baidu.com");
}
//
public void sendRe(HttpServletResponse response) {
response.setStatus(302);
response.setHeader("Location", "http://www.baidu.com");
}
public void sendNum(HttpServletResponse response) throws IOException {
response.setStatus(200);
response.sendError(404);
response.sendError( 404, "ser accept your request but i don't want to you see my web page");
}
}
궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
검색 사이트를 만들었으므로 정리해 보았습니다 1■목차 · 처음에 · 사이트 구성 · DB 구성 ・테이블 내용 ・급제점 ■ 처음에 Jsp·서블릿을 학습해, 뭔가 만들려고 생각했기 때문에 스포츠 짐의 검색 사이트를 만들어 보았다. 현재의 스포츠 체육관 검색 사이트는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.