queryString 으로 입력하면 값이 주입 된다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String user = request.getParameter("user");
String id = request.getParameter("id");
out.println("유저 이름 파라미터 값 : "+user + "<br>");
out.println("유저 아이디 파라미터값 : "+id);
%>
</body>
</html>
정적인 파일 및 동적인 파일을 include를 통해 가져와서 화면 구성 가능.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title> 파일 가져 오기 </title>
</head>
<body>
<!-- 정적 include : 미리 컴파일해둠 , 어쩌다 한번 바꾸는 파일 -->
<%@ include file="copyright.txt" %>
<br>
<br>
<%--동적 include : 페이지를 요청할때마다 새로고침 , 자주 수정하는 파일 --%>
<jsp:include page="update.txt" />
<h1> 구구단!</h1>
<jsp:include page="gugudan.jsp" />
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2> 구구단 </h2>
<%
for (int i = 2; i <= 9; i++) {
for (int j = 1; j <= 9; j++) {
out.println( i + " *"+ j +" = " + i*j + " ");
}%>
<br>
<% } %>
</body>
</html>
Redirect, Forward 모두 화면 이동이지만, 이전 Request, Response를 보존하느냐 아니냐에 따라 나뉜다. (Forward는 들고가고 Redirect는 새로운 요청)
이후에 나올 개념!
시나리오 :
- form2.jsp를 통해 입력하고 버튼을 누르면 입력받은 값을 Forward를 통해 formHandler.jsp로 요청
- forHandler.jsp의 request를 해당 자바 객체에 set property!
- 이를 화면에 get메소드를 통한 출력
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<!-- action 주소는 domain 주소 포트번호 뒤부터 입력 -->
<form action="formHandler.jsp" method="get">
<%-- placeholder 속성은 입력 필드에 사용자가 적절한 값을 입력할 수 있도록 도와주는 짧은 도움말을 명시--%>
<input type="text" name="user" placeholder="user"><br>
<input type="text" name="email" placeholder="email"><br>
<input type="password" name="password" placeholder="password"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<jsp:useBean id="user" class="beans.User"></jsp:useBean> << id=name 동일해야함
<jsp:setProperty name="user" property="*"></jsp:setProperty> << id = name은 동일해야함
<p> 유저 : <%= user.getUser()%></p>
<p> 이메일 : <%= user.getEmail()%></p>
<p> 비밀번호 : <%= user.getPassword()%></p>
</body>
</html>
시나리오
회원가입 시 이메일에 대한 정규식 및 비밀번호 조건(4자 이상)에 맞다면 WELCOME.JSP 아니라면 ERROR MESSAGE 출력 후 회원가입화면으로
버튼을 누르면 /Controller post 요청 및 url 이동
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%-- 폼 태그 안에 입력창에 데이터 입력후 submit버튼 클릭시 폼태그의 서버주소로 http 메소드 방식으로 전송됨--%>
<%--에러메시지 --%>
<%--<%= request.getAttribute("errorMessage") %>--%>
<div style="background-color: crimson">${errorMessage}</div>
<form action="/Controller" method="post">
이메일 : <input type="email" name="email"> <br>
패스워드 : <input type="password" name="password"> <br>
<input type="submit" value="전송">
</form>
</body>
</html>
여기서 Forward를 통해 화면이동을 하여도 동일한 request를 주게끔 한다.
@WebServlet("/Controller")
public class Controller extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String email = req.getParameter("email");
String password = req.getParameter("password");
User2 user2 = new User2(email, password);
if(user2.validate()){
// 합격페이지(jsp)로
req.setAttribute("email",email);
req.getRequestDispatcher("welcome.jsp").forward(req,resp);
}else {
// 다시 입력 (jsp)로 이동, 에러메세지를 리퀘스트 객체에 넣어 전달..
req.setAttribute("errorMessage",user2.getMessage());
req.getRequestDispatcher("form1.jsp").forward(req,resp);
}
}
}
/**
* 이메일과 패스워드 형식에 대한 검사!
*/
public boolean validate() {
if (email.isEmpty()) {
this.message = " 이메일을 입력하세요 ";
return false;
}else if (password.isEmpty()) {
this.message = "비번을 입력하지 않음";
return false;
}else if (!email.matches("\\w+@\\w+.\\w+")) {
this.message = "이메일 형식이 맞지 않음";
return false;
}else if (password.length() < 4) {
this.message = "패스워드는 4자 이상";
return false;
} else if (password.matches("\\w*\\s+\\w*")) {
message = "패스워드에 스페이스가 포함되면 안됩니다.";
return false;
}
return true;
}
성공시 ${email} 이 welcome.jsp에서 출력.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1> 반갑습니다. <%= request.getAttribute("email")%> 님 로그인 완료 </h1>
<h1> 동일한 내용입니다 . ${email} 님 로그인 완료</h1>
</body>
</html>
실패시 ${errorMessage} 내용이 form1.jsp에서 출력하여 다시 회원가입 하도록 구성