JSP/이론
sendRedirect//radio사용//checkbox(getParameterValues) //selectoption //textarea(getParameter().replace())
SEOKIHOUSE
2023. 6. 7. 12:13
- sendRedirect: 리다이렉트는 웹 서버가 웹 브라우저에게 다른 페이지로 이동하라고 응답하는 기능
package servlet0607;
import java.io.IOException;
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("/pagemove")
public class pagemove extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet 실행..");
response.sendRedirect("0607p2.jsp");
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>p1페이지</h1>
<a href="pagemove">p2페이지로 가기</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>p2페이지</h1>
</body>
</html>
- 문제1)
id: admin
pw:1234
-->로그인 성공 시 로그인 성공한 0607loginsucess.jsp파일이 열리도록
-->실패 시 실패한 0607loginfail.jsp파일이 열리도록 하기
package servlet0607;
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("/login")
public class login extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String pw = request.getParameter("pw");
if(id.equals("admin") && pw.equals("1234")) {
System.out.println("로그인 성공");
response.sendRedirect("0607loginsucess.jsp");
}else {
System.out.println("로그인 실패");
response.sendRedirect("0607loginfail.jsp");
}
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로그인페이지입니다</h1>
<hr>
<form action="login" method="get">
<input type="text" name="id" placeholder="input id">
<input type="text" name ="pw" placeholder="input pw">
<input type="submit" value="로그인하기">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로그인 성공한 후 이용가능한 페이지</h1>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>로그인 실패 후 뜨는 페이지</h1>
</body>
</html>
- 문제2) radio사용
남자면 0607manpage.jsp로 이동
여자면 0607womanpage.jsp로 이동
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>성별확인</h1>
<hr>
<form action="radio" method="get">
<input type="radio" name="gender" value="man" checked>man
<input type="radio" name="gender" value="woman">woman
<input type="submit" value="전송">
</form>
</body>
</html>
3)checkbox사용
값이 여러개 ==> 배열을 써야한다
getParameter를 쓰지말고
- getParameterValues를 쓰자
근데 배열이니깐? string을 배열로 만들어줘야겠찌?
-->>String [] hobbies =request.getParameterValues("hobies");
- 아무것도 체크안하고 전송 시 NullPointerException이 뜬다 이 처리를 해주자
String [] hobbies = null;이 되어있다
why??>>배열이 아직 메모리에 할당되지 않았기 때문에 배열에 접근하려고 할 때 오류가 발생하는 것
- 1번방법(Me)

해결완료!
- 2번방법(강사님)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>checkbox 파라미터 보내기</h1>
<hr>
<form action="checkbox" method="get">
취미: <input type="checkbox" name="hobbies" value="reading">독서
<input type="checkbox" name="hobbies" value="watchingmovie">영화보기
<input type="checkbox" name="hobbies" value="chatting">채팅
<input type="submit" value="전송">
</form>
</body>
</html>
package servlet0607;
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("/checkbox")
public class checkbox extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String[] hobbies = request.getParameterValues("hobbies");
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
//1번방법
if (hobbies == null) {
pw.print("취미가 없으시군요");
} else {
for (int i = 0; i < hobbies.length; i++) {
pw.print(hobbies[i] + "<br>");
}
}
//2번방법
// if (hobbies == null) {
// pw.print("취미가 없으시군요");
// return;
// }
//
// for (int i = 0; i < hobbies.length; i++) {
// pw.print(hobbies[i] + "<br>");
// }
}
}
4)selectoption 사용
- 1번(Me)
- 2번(강사님)
근데 사실상 선택하세요 에다가 disabled해주면 되긴한다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Select Option 파라미터 보내기</h1>
<hr>
<form action="selectoption" method="get">
<select name="job" multiple>
<option value="">--선택하세요--</option>
<option value="student">학생</option>
<option value="teacher">교사</option>
<option value="coworker">회사원</option>
</select>
<input type="submit" value="제출">
</form>
</body>
</html>
package servlet0607;
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("/selectoption")
public class selectoption extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String[] job = request.getParameterValues("job");
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
String result = "";
if (job == null) {
result = "학생, 교사, 회사원 중에 선택하세요";
pw.print(result);
return;
}
for (int i = 0; i < job.length; i++) {
if (job.length > 1) {
if(job[i].equals("")) {
pw.print("선택하세요는 포함시키면 안됨");
return;
}else {
if(job.length-1 == i) {
result += job[i];
}else {
result += job[i] + ", ";
}
}
} else {
if (job[i].equals("student")) {
result = "학생";
} else if (job[i].equals("teacher")) {
result = "선생";
} else if (job[i].equals("coworker")) {
result = "회사원";
} else if (job[i].equals("")) {
result = "선택하지 않으셨습니다";
}
}
}
pw.print("당신의 직업은 " + result);
}
}
5)textarea사용
이 녀석으로 텍스트박스 크기 변경못하게 할 수 있다
자 그럼 줄을 띄워보자

엔터했는데 왜 안될까..
- getParameter().replace()이 녀석을 써주자
근데 또 궁금한게 주소창에 이상한게 있다
http://localhost:8090/ex00/textarea?msg=하%0D%0A이%0D%0A고
%0D%0A<< 너 뭔데?

package servlet0607;
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("/textarea")
public class textarea extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// String text = request.getParameter("msg");
// \r\n -- 엔터키 에 해당되는놈이 발견되면 br해라
String text = request.getParameter("msg").replace("\r\n", "<br>");
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.print(text);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="textarea" method="get">
<textarea style="resize :none" rows="5" cols="20" name="msg"></textarea>
<input type="submit" value="전송">
</form>
</body>
</html>