디지털 컨버전스/JSP
[JSP] input 기능
gimyeondong
2020. 4. 27. 17:14
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.0.js">
</script>
</head>
<body>
<form action="index2.jsp">
<input type=text name=msg>
<input type=submit>
</form>
</body>
</html>
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>
<%
String msg = request.getParameter("msg");
System.out.println(msg);
%>
</body>
</html>
서블릿
1. 요청된 내용을 처리한다
2. 응답한다.
JSP
1. 스크립틀릿 내용을 처리한다
2. 나머지는 반환
언제 JSP를 써야할지 확실하지 않음
-> 현재 시점에서는 html말고 그냥 다 JSP로 작성하자
(간단한 내용은 속도 차이 크지 않음)
JSP의 단점
- 2번 번역 : 메모리 낭비
- 퍼블리셔와 디벨로퍼 업무 구분
-> MVC 패턴
index.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>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<fieldset>
<legend>Index</legend>
<button id="toInput">toInput</button>
</fieldset>
<script>
$("#toInput").on("click",function(){
location.href = "input.jsp";
})
</script>
</body>
</html>
input.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>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
<style>
fieldset{
text-align: center;
}
</style>
</head>
<body>
<form action="InputProc.jsp" method="post">
<fieldset>
<legend>Input</legend>
<input type=text name=name placeholder="Input name"><br>
<input type=text name=msg placeholder="Input msg"><br>
<input type=submit>
</fieldset>
</form>
</body>
</html>
InputProc.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Input Process</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<%
String name = request.getParameter("name");
String msg = request.getParameter("msg");
System.out.println(name + " : " + msg);
%>
<script>
alert("Input complete");
location.href = "index.jsp";
</script>
</body>
</html>
DAO 만들고 입력하기
InputProc.jsp
<%@page import="kh.backend.dto.MessagesDTO"%>
<%@page import="kh.backend.dao.MessagesDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Input Process</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<%
String name = request.getParameter("name");
String msg = request.getParameter("msg");
MessagesDAO dao = new MessagesDAO();
int result = dao.insert(new MessagesDTO(0,name,msg,null));
%>
<script>
alert("Input complete");
location.href = "index.jsp";
</script>
</body>
</html>
방법1) out.write() 안쓰려고 JSP쓰는 건데 또 out.write() 사용
<%@page import="kh.backend.dto.MessagesDTO"%>
<%@page import="kh.backend.dao.MessagesDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Input Process</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<%
String name = request.getParameter("name");
String msg = request.getParameter("msg");
MessagesDAO dao = new MessagesDAO();
int result = dao.insert(new MessagesDTO(0,name,msg,null));
if(result > 0){
out.write("<script>");
out.write("</script>");
}
%>
</body>
</html>
방법2) 클라이언트한테 소스 노출 if(1>0)
<%@page import="kh.backend.dto.MessagesDTO"%>
<%@page import="kh.backend.dao.MessagesDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Input Process</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<%
String name = request.getParameter("name");
String msg = request.getParameter("msg");
MessagesDAO dao = new MessagesDAO();
int result = dao.insert(new MessagesDTO(0,name,msg,null));
%>
<script>
if(<%=result %>>0){
alert("Input complete");
location.href = "index.jsp";
}else{}
</script>
</body>
</html>
방법3) <% 닫고 열기 반복
<%@page import="kh.backend.dto.MessagesDTO"%>
<%@page import="kh.backend.dao.MessagesDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Input Process</title>
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<%
String name = request.getParameter("name");
String msg = request.getParameter("msg");
MessagesDAO dao = new MessagesDAO();
int result = dao.insert(new MessagesDTO(0, name, msg, null));
if (result > 0) {
%>
<script>
alert("Input complete");
location.href = "index.jsp";
</script>
<%
} else {
%>
<script>
alert("Input failed");
location.href = "index.jsp";
</script>
<%
}
%>
</body>
</html>