- Today
- Total
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Hostinger
- 오라클
- 워스프레스
- dbeaver
- Oracle
- PROCEDURE
- 엘리멘터
- function
- pl/sql
- 문제해결
- sql
- javascript
- wordpress
- PLSQL
- 함수
- 자바스크립트
- 환경세팅
- 워드프레스
- 트러블슈팅
- 배열
- JSP
- iframe
- spring boot
- 오류해결
- 프로시저
- 이클립스
- 클론코딩
Archives
개발 공부중
[JAVA] 쿼리스트링 활용하기 (GET/POST) 본문
쿼리스트링이란?
쿼리스트링은 URL에서 정보를 전달하는 데 사용되는 일반적인 방법 중 하나이다.
주로 웹 애플리케이션에서 GET 요청을 통해 데이터를 전송할 때 사용된다.
쿼리스트링은 URL의 끝에 "?" 문자로 시작하며, 그 뒤에 "키=값" 쌍을 나열하여 데이터를 전달한다.
각 "키=값" 쌍은 "&" 문자로 구분됩니다.
전달되는 입력값의 형태 예시 (GET 방식)
쿼리스트링을 아래와 같이 사용할 경우 전달되는 값은?
아래 예제는
"/hi" 경로로 HTTP GET 요청을 처리하고, 요청 파라미터 "cnt"를 쿼리스트링에서 읽어와서 반복 횟수를 지정한 후 "안녕 서블릿 !!!" 메시지를 출력하는 예제 코드
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;
@WebServlet("/hi")
public class Nana extends HttpServlet {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
int cnt = Integer.parseInt(request.getParameter("cnt"));
for(int i = 0; i< cnt; i++) {
out.println((i+1)+ ": 안녕 서블릿 !!! <br>");
}
}
}
위 코드를 실행하면 cnt가 null이라 500 에러가 뜬다.
주소를 /hi?cnt=3 으로 바꾸면 화면이 나온다.
오류 해결방법
null 오류가 나지 않게 cnt에 기본값을 설정해준다.
package com.newlecture.web;
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;
@WebServlet("/hi")
public class Nana extends HttpServlet {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String cnt_ = request.getParameter("cnt");
int cnt = 100; //cnt의 기본값을 설정
if(cnt_ != null && !cnt_.equals("")) //전달된 값이 있으면
cnt = Integer.parseInt(cnt_); //전달된 값으로 대체
for(int i = 0; i< cnt; i++) {
out.println((i+1)+ ": 안녕 서블릿 !!! <br>");
}
}
}
주소가 /hi 일때 글자가 100번 나온다.
아래는 확인할 수 있는 예시
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Nana.java</title>
</head>
<body>
환영합니다 <br>
<a href = "hi"> 인사하기 </a><br>
<a href = "hi?cnt=3"> 인사 3번하기 </a><br>
</body>
</html>
사용자가 cnt 값을 직접 입력할 수 있도록 해주었다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Nana.java</title>
</head>
<body>
환영합니다 <br>
<a href = "hi"> 인사하기 </a><br>
<a href = "hi?cnt=3"> 인사 3번하기 </a><br>
<div>
<form action="hi">
<div>몇번 출력할까요??? </div>
<div>
<input type ="text" name = cnt />
<input type ="submit" value="출력" />
</div>
</form>
</div>
</body>
</html>
POST 방식
아래는 예시 코드
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/bootstrap.css"> <!-- 참조 -->
<title>JSP 전송</title>
</head>
<body>
<div>
<form action ="notice-reg" method="POST">
<div>
<label>제목:</label>
<input type ="text" class="form-control" placeholder="제목을 입력" name ="title" style="width:500px;">
</div>
<div>
<label>내용:</label>
<textarea class="form-control" placeholder="내용을 입력" name ="content" style="width:500px;" ></textarea>
</div>
<div>
<input class="btn btn-primary" type="submit" value="등록" />
</div>
</form>
</div>
<script>
</script>
</body>
</html>
reg.jsp
package com.newlecture.web;
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;
@WebServlet("/notice-reg")
public class NoticeReg extends HttpServlet {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String title = request.getParameter("title");
String content = request.getParameter("content");
out.println("==== title ====<br/>");
out.printf(title + "<br/><br/>");
out.println("==== content ====<br/>");
out.println(content + "<br/><br/>");
}
}
NoticeReg.java
'JAVA' 카테고리의 다른 글
[JAVA] IndexOutOfBoundsException 에러 해결 (0) | 2024.01.18 |
---|---|
[JAVA] Application 객체로 상태값 저장하기(+- 계산기) (0) | 2023.10.19 |
[JAVA] 이클립스 디버깅 방법 (단축키) (0) | 2023.08.31 |
InputStream/OutputStream를 이용해서 화면 저장하기 (0) | 2023.01.16 |
[TIL] Vector와 ArrayList (1) | 2022.12.22 |
Comments