디지털 컨버전스/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>