JSP 스크립트 요소
JSP 스크립트 요소란 JSP 페이지에서 여러 가지 동적인 처리를 제공하는 기능으로 <% %> 기호 안에 자바 코드로 구현한다.
<% %> 기호를 스크립트릿 이라고 부른다.
스크립트 요소의 종류는 세가지가 있다.
- 선언문 : JSP에서 변수나 메서드를 선언할 때 사용한다.
- 스크립트릿 : JSP에서 자바 코드를 작성할 때 사용한다.
- 표현식 : JSP에서 변수의 값을 출력할 때 사용한다.
* 선언문 사용하기
선언문은 jsp 페이지에서 사용하는 멤버 변수나 멤버 메서드를 선언할 때 사용한다.
선언문 안의 멤버는 서블릿 변환 시 서블릿 클래스의 멤버로 변환된다.
선언문의 형식
<%! 멤버 변수 or 멤버 메서드 %>
예제
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! //선언문!!
String name = "kim";
public String getName(){return name;}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>선언문 연습하기</title>
</head>
<body>
<h1>안녕하세요 <%=name%>님!</h1>
</body>
</html>
실행결과
선언문에서 선언된 변수와 메서드는 서블릿 클래스의 멤버 변수와 멤버 메서드로 변환이 된다.
따라서 선언문에서 선언된 변수는 JSP(서블릿 클래스) 안에서 자유롭게 접근할 수 있다.
* 스크립트릿 사용하기
스크립트릿은 초기의 JSP에서 자바 코드를 이용해 화면의 동적인 기능을 구현했다. 비록 현재 jsp에서는 거의 사용되지 않지만 알아두면 나쁘지 않다
스크립트릿의 형식
<% 자바 코드 %>
예시
JSP 문서에서 중간에 <% %> 사용하여 자바 코드 삽입
<% String age = request.getParameter("age"); %>
<% %> 안에는 자바 코드만 쓸 수 있다!!
* 표현식 사용하기
표현식은 JSP페이지의 정한 위치에 값을 출력하는 기능이다. 즉, JSP 페이지에서 변수나 메서드의 결과 값 등을 브라우저에 출력하는 용도로 사용한다.
표현식의 형식
<%= 값 or 자바 변수 or 자바 식 %>
예시
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!
String name = "kim";
public String getName(){
return name;
}
%>
<% String age = request.getParameter("age"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>표현식 연습</title>
</head>
<body>
<h1>안녕하세요 <%=name%>님!</h1>
<h1>나이는 <%=age%>살 입니다!</h1>
<h1>키는 <%=180%>cm 입니다!</h1>
<h1>나이+10은 <%=Integer.parseInt(age)+10%>살 입니다!</h1>
</body>
</html>
출력(주소 뒤에 ?age=25를 붙여 age 변수에 값을 입력해서 이동)
<%= %> 안의 자바 변수나 자바 식에는 세미콜론(;)이 있으면 안된다!
* JSP 주석문 사용하기
JSP 주석문에는 세가지가 있다.
- HTML 주석
- 자바 주석
- JSP 주석
주석문의 형식은
<%-- 내용 --%> 으로 처리한다.
<%
/*
String age = request.getParameter("Age");
*/
// <% %> 안의 자바 코드에 대한 주석문
%>
<!-- HTML 에 대한 주석문 -->
<%-- <%= JSP 페이지에 대한 주석문 %>--%>
로그인 실습 예제
스크립트 요소를 이용해 실습하기
로그인 예제
<login.html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="frmLogin" method="post" action="result.jsp" enctype="utf-8">
아이디 : <input type="text" name="user_id"><br>
비밀번호 : <input type="password" name="user_pw"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
<result.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과 출력창</title>
</head>
<body>
<h1>결과 출력</h1>
<% // getParameter() 메서드를 이용해 입력 정보를 가져온다.
request.setCharacterEncoding("utf-8");
String user_id = request.getParameter("user_id");
String user_pw = request.getParameter("user_pw");
%>
<!-- 아이디와 비밀번호를 표현식으로 출력한다. -->
<h1>아이디 : <%= user_id %></h1>
<h1>비밀번호 : <%= user_pw %></h1>
</body>
</html>
실행 결과
로그인창에서 정보를 입력하면


결과창으로 정보를 가지고 넘어가 출력한다.
한걸음 더 나아가 스크립트릿 안에 자바 코드를 사용해 아이디가 정상적으로 입력되었는지 체크한 후 정상 입력 여부에 따라 동적으로 다른 결과를 출력하도록 예시를 만들었다.
<result2.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% // getParameter() 메서드를 이용해 입력 정보를 가져온다.
request.setCharacterEncoding("utf-8");
String user_id = request.getParameter("user_id");
String user_pw = request.getParameter("user_pw");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과 출력창</title>
</head>
<body>
<%
if(user_id == null || user_id.length() == 0){
%>
아이디를 입력하세요.<br>
<a href="login.html">로그인 하기</a>
<%
}else{
%>
<h1>환영합니다. <%=user_id %>님!</h1>
<%
}
%>
</body>
</html>
html 문서에 form태그 안의 action을 result2로 바꿔준뒤 아이디를 넣고 실행하게 되면 아래와 같은 화면이 나오고

아이디를 넣지 않고 실행하게 되면

위와 같은 화면과 함께 로그인 페이지로 가는 a태그에 넣은 하이퍼링크가 출력되게 된다.
위의 예제보다 좀더 심화시켜 관리자를 정해놓는 예제를 만들어 보았다.
<resulst3.jsp>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% // getParameter() 메서드를 이용해 입력 정보를 가져온다.
request.setCharacterEncoding("utf-8");
String user_id = request.getParameter("user_id");
String user_pw = request.getParameter("user_pw");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과 출력창</title>
</head>
<body>
<%
if(user_id == null || user_id.length() == 0){
%>
아이디를 입력하세요.<br>
<a href="login.html">로그인 하기</a>
<%
}else{
if(user_id.equals("admin")){
%>
<h1>관리자로 로그인 했습니다.</h1>
<%
}
%>
<h1>환영합니다. <%=user_id %>님!</h1>
<%
}
%>
</body>
</html>
위와 같이 코드를 짜고 html에서 폼 태그에 액션을 result3 로 변경해준다음
로그인 창을 실행하여 아이디에 admin 을 입력한뒤 로그인버튼을 누르게되면


위와 같이 관리자로 로그인했다고 뜨게된다.
다른 아이디로 로그인하면 예제 2와 같이 평범한 회원으로 로그인 한것처럼 구현이 된다.

본래라면 DB를 사용해 관리자를 따로 등록해 놓겠지만 처음 배우는 과정에서 이해를 위해 코드가
위처럼 관리자로 로그인하는 조건문을 추가하여 관리자의 기능을 추가할 수 있을것 같다
'개발공부 > WEB' 카테고리의 다른 글
AJAX란? (0) | 2022.03.27 |
---|---|
@ReuquestParam (0) | 2022.03.26 |
Spring : JSP 스크립트 요소 기능(2) (0) | 2022.03.05 |
Spring : JSP 정의와 구성 요소 (0) | 2022.03.01 |
Spring : 서블릿(servlet)이란? (0) | 2022.03.01 |