JSP file에 JAVA code 사용하기

hee·2023년 8월 26일
0

a.txt file 응답을 할 수 있는데 왜 템플릿 엔진을 쓸까?
JAVA 코드를 사용할 수 있기 때문이다!

.jsp, .mustache, Thymeleaf, Groovy 등을 템플릿엔진이라고 한다.
템플릿엔진을 쓰면 java코드를 넣어서 동적파일로 응답을 할 수 있다.

java Class파일을 아래와같이 만들어 보자

@Controller //파일응답
public class JavaToJspController {
	@GetMapping("/jsp/java")
	public String jspToJava() {
		return "d";
				//d.jsp로 할 필요 없음  ViewResolver 설정이 되어있기 때문에      
				//prefix: /WEB-INF/views/
			    //suffix: .jsp
	}
}

그리고 /WEB-INF/views/파일 안에 d.jsp파일을 만들어 body 부분을 아래와 같이 작성해준다.

<body>
<h1>This is d.</h1>

<!-- java 코드 명시 하는 부분 -->
<%
	int num=10;
%>

<!-- html파일(num값)을 출력하라는 부분 -->
<h3>num의 값은 <%=num%></h3>
</body>

자바코드를 그대로 써서 웹 브라우저에 던지게되면 웹 브라우저는 파일을 다운로드를 하게된다.
jsp파일을 이해하지 못하기 때문!
그러니 아파치웹서버가 톰캣에 java코드를 집어던져 html로 바꿔달라 요청하기 위한 기호(<%%>)를 사용한다.

이렇게 템플릿엔진을 이용해 데이터베이스 값도 넣을 수 있게된다.
데이터베이스 값이 변하게되면 그부분 값도 계속 변하게 되는데 이것은 동적인 파일을 응답 받을 수 있다는 의미이다.
이런식으로 페이지는 하나인데 결과가 계속 다른페이지를 만들 수 있다.

지금까지 html파일안에 java코드를 넣었다.
서블릿은 반대로 java코드 안에 html코드를 집어넣어서 응답을 해주는 것이다.
그렇게되면 하지만 자바코드 안에 html, css등 다양하게 들어와야하는데 그렇게되면 복잡해지기 때문에 훨씬 힘들어진다.
html파일안에 java 코드를 넣는것이 훨씬 편리하다.

@WebServlet("/singleparam.ssafy")		
public class SingleParamServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet call!!!!");
//		1. data get
		String name = request.getParameter("username");
		String id = request.getParameter("userid");
		int area = Integer.parseInt(request.getParameter("area"));
		
//		2. logic >> 인사의 글자색을 서울 : 파랑, 대전 : 오렌지, 구미 : 핑크, 광주 : 초록, 부울경 : 보라
		String color[] = {"blue", "orange", "pink", "green", "purple"};
		
//		3. response page
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("	<body>");
		out.println("	<h2 style=\"color:" + color[area] + "\">안녕하세요. " + name + "(" + id + ")님!!!</h2>");
		out.println("	</body>");
		out.println("</html>");
	}

서블릿코드 예시


이번에는 자바파일 안에서 자바코드를작성해 views파일안에 생성한 e파일에 쓸 수 있게 해보자.

@Controller //파일응답
public class JavaToJspController {
	@GetMapping("/jsp/java/model")
	public String jspToJavaToModel(Model model) { //함수의 파라미터에 Model을 선언하고
// 아래있는 자바코드를 e파일에 쓰고싶다면 함수명 (Model model) 
		User user = new User();
		user.setUsername("ssar");
		
		model.addAttribute("username", user.getUsername()); //addAttribute함수로 전달 그러면username라는 key값이 전달됨
//		("key",value) value에는 모든 타입이 들어갈 수 있음
		return"e";
	}
}

포인트는 함수의 파라미터에 Model을 선언하고 addAttribute함수로 전달하는 것이다.

e파일에서는 ${}를 이용해서 key값을 받아온다.

<body>
<h1>This is e</h1>
<h3>${username}</h3>
</body>

이러한 방법으로 model을 통해 html 페이지도 java 코드를 전달 할 수 있다.

profile
고군분투 코린이의 코딩일기

0개의 댓글

관련 채용 정보