본문 바로가기

Spring/Model1 _2(MVC)

0926 JSP - servlet

728x90
반응형
operatorTest.html
	<h1>operatorTest.html</h1>
	
	숫자 2개 입력 받기 - > operatorPro.jsp 전달 후 연산 
	
	<form action = "operatorPro.jsp">
	숫자1 : <input type = "text" name = "num1"><br>
	숫자2 : <input type = "text" name = "num2"><br>
	
	<input type = "submit" value = "전송하기">
	
	
	</form>

 

operatorPro.jsp
<body>
	<h1> operatorPro.jsp </h1>
	
	<h2> 전달 정보 저장 </h2>
	[JSP]
	<%
	int num1 = Integer.parseInt(request.getParameter("num1"));
	int num2 = Integer.parseInt(request.getParameter("num2"));
	%>
	
	숫자1 : <%=num1 %>, 숫자2 : <%=num2 %>
	
	<hr>
	[el] : el표현식으로 전달받은 파라메터는 자동 캐스팅 됨<br>
	숫자1 : ${param.num1 }, 숫자2 : ${param.num2 } <br>
	숫자1 : ${param.num1 + 100 }, 숫자2 : ${param.num2 + 100 }
	
	
	<hr>
	[el] : num1 + num2 출력<br>
	
	${param.num1 } + ${param.num2 } = ${param.num1 + param.num2 }<br>
	
	[el] : num1, num2 값이 모두 양수인가? (t/f) ${ (param.num1 >0) && (param.num2 >0)}
	
	<br>
	
	[el] : num1, num2 값이 모두 양수인가? ("양수"/"양수 아님")
		${ ((param.num1 >0) && (param.num2 >0)) ? "양수" : "양수 아님" }   
	<br>
	
<!-- 	키워드. 예약어 -->
	[el] : ${empty param.id }  empty 값 : 값이 null일 경우 true/아닐경우 false
		 if(id != null)
		 
	<hr>
	
	<h2> EL 연산자 p516~517 </h2>
	
	비교연산자 			논리연산자
	== eq				&& 	and
	!= ne				||  or
	<  lt				!	not
	>  gt
	<= le
 	>= ge
	
</body>

 

TestServlet1.java
package com.itwillbs.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet1 extends HttpServlet {
	
	// http://localhost:8088/JSP/test1 (get)
	// alt shift s + v
	
	@Override
	protected void doGet(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet() 호출");
		
		doPost(request, response);
	}

	@Override
	protected void doPost(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost() 호출");
		
		// request 영역에 정보 저장 
		request.setAttribute("cnt", 1000);  
		
		
//		response.getWriter().append("<h1> HTML 메세지 작성하기 </h1>");
//		response.setContentType("text/html; charset=UTF-8");
//		
//		PrintWriter out = response.getWriter();
//		out.print("<h1> HTML 메세지 작성하기 222 </h1>");
//		out.close();
		
		// 3) forward 방식 - 포워딩
		// 1. 페이지 이동 시 주소 변경 x, 화면 변경 o 
		// 2. request 내장 객체 정보를 전달 가능 
		
		//<jsp:Forward > (JSP 코드 x) 
		
		RequestDispatcher dis 
			= request.getRequestDispatcher("./el/Attribute.jsp");
											// 이동할 주소
		
		dis.forward(request, response);
		
	}
	

}

 

 

web.xml
  
  <servlet>
  	<servlet-name>TestServlet1</servlet-name>
  	<servlet-class>com.itwillbs.servlet.TestServlet1</servlet-class>
  </servlet>
<servlet-mapping>
	<servlet-name>TestServlet1</servlet-name>
	<url-pattern>/test1</url-pattern>
</servlet-mapping>
  
</web-app>

 

Attribute.jsp
<body>
	<h1> Attribute.jsp </h1>
	

	<% 
	int cnt = (Integer)request.getAttribute("cnt");  //언박싱 한 것 
	cnt = 2000;
	%> 
		cnt값 (jsp) : <%=cnt %><br>
		cnt값 (jsp) : <%=request.getAttribute("cnt") %><br>
	
		cnt값 (el)  : ${cnt } <br>
		cnt값 (el)  : ${requestScope.cnt } <br>

</body>
</html>

=> el 영역객체의 이름은 생략 가능

 

 

* 영역범위의 크기가 작은 곳에서 큰 곳으로 이동 하면서 검색  

 

 

test2
package com.itwillbs.servlet;


import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/test2")
public class TestServlet2 extends HttpServlet {

	// http://localhost:8088/JSP/test2
	
	//alt shift s + v
	@Override
	protected void doGet(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
		
		// 배열 
		//String[] food
		String[] foods = {"햄버거","피자","서브웨이","돈까스","초밥"};
		
		// 배열의 정보를 request 영역에 저장 
		request.setAttribute("foods", foods);
		
		//스포츠 종류를 Arraylist 저장 
		//ArrayList sports = new Arraylist();
		List sports = new ArrayList();
		
		sports.add("축구");
		sports.add("야구");
		sports.add("수영");
		sports.add("배구");
		
		//request 영역 저장
		request.setAttribute("sports", sports);
		
		//forward 방식 이동 - ./el/Arrays.jsp
		RequestDispatcher dis
		= request.getRequestDispatcher("./el/Arrays.jsp");
		
		
		dis.forward(request, response);    

	}

	
}

 

 

test3 

package com.itwillbs.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.itwillbs.test.Person;
import com.itwillbs.test.Phone1;

@WebServlet("/test3")
public class TestServlet3 extends HttpServlet {

	public static void main(String[] args) {



	}

	@Override
	protected void doGet(HttpServletRequest request, 
			HttpServletResponse response) throws ServletException, IOException {
			//[/test3] 가상주소 사용하여 실행 
		System.out.println("TestServlet3 - doGet() 호출");
		// Person 객체 정보 생성 후 저장해서 전달
		

	
		// Person - com.itwill.test 패키지에 생성 됨 
		// 이름, 나이, 휴대폰 -> Person
		// 휴대폰 - 모델명, 전화번호 -> Phone
		
		// ["김학생" 20 아이폰 14 010-1234-1234]
		Phone1 iPhone = new Phone1();
		iPhone.setModelName("아이폰14");
		iPhone.setTel("010-1234-1234");
		Person kim = new Person();
		kim.setName("김학생");
		kim.setAge(20);
		kim.setP(iPhone);
		
		request.setAttribute("Person",kim);  //휴대폰 정보는 이미 Person에 저장되어있음 
		// ./el/Beans.jsp 이동 후 출력 (jsp/el)
		RequestDispatcher dis
		= request.getRequestDispatcher("./el/Beans.jsp");
		
		
		dis.forward(request, response);    
	
	}

}

 

 

bean.jsp

 

<%@page import="com.itwillbs.test.Phone1"%>
<%@page import="com.itwillbs.test.Person"%>
<%@ 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>
	<h1> Beans.jsp </h1>
	
	[jsp]
	<%
	Person p = (Person) request.getAttribute("person");
	
	
	%>
	
	이름 : <%=p.getName() %>
	나이 : <%=p.getAge() %>
	
	<% Phone1 iPhone = p.getP(); %>
	
	휴대폰 모델명 : <%=p.getP().getModelName() %>
	전화번호 : <%=p.getP().getTel() %>
	
	모델명 <%=iPhone.getModelName() %>
	전화번호 <%=iPhone.getTel() %>
	
	<hr>
	[el]
	${requestScope.person.name }
	${requestScope.person.age }
<%-- 	${requestScope.person.Phone1.modelName } --%>
<%-- 	${requestScope.person.p.tel } --%>
객체정보 불러올 수 있는 방법 
</body>
</html>

 

 

 

 

가상주소 - 상대경로 

1)가상주소 호출 
./test1 => ./ (프로젝트명) => /JSP/test1

2)실제주소 호출 
./el/Arrays.jsp => ./ (webapp폴더) => /webapp/el/Attribute.jsp

 

실제주소 - 절대경로 

/ (root-최상위폴더)
../ (상위폴더)

728x90
반응형

'Spring > Model1 _2(MVC)' 카테고리의 다른 글

0929 JSP - jstl 커스텀 액션  (0) 2022.09.29
0927 JSP - JSTL (JSP Standard Tag Library)  (0) 2022.09.27
0923 JSP - web.xml 배포 서술자 , EL 표현식  (0) 2022.09.23
0922 JSP - 서블릿  (0) 2022.09.22
0922 JSP - 형변환  (0) 2022.09.22