My footsteps

JSP / 2 본문

국비수업/수업정리

JSP / 2

밀김 2023. 5. 23. 10:16
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

변수의 값을 프린트 하기 위한 간단한 코드블럭 형태

 

 

멤버함수정의 하는 방법 : 느낌표.

 

 

 

 

- 코드블럭 : 코드가 그대로 옮겨지는 블럭

 

 

 

 

지시블럭

- 지시블럭: 코드를 만드는 jsp에게 '설정정보'만 넘겨줄때 골뱅이를 쓴다

 

 

 

- pageContext,session,application : 3대 저장소

(+ request,response,out) 이것들을 내장객체(빌트인 오브젝트) 라고 부른다

 

 

- 내장객체는 잘 쓰지 않는다..반전~~~

 

 

 

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<% 
int test = 9; 
%>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

	<% int x = 28;%>
	<%
	String age_ = request.getParameter("age");
	int age = Integer.parseInt(age_);
	%>
	<% 
	if(age > 28)
		out.write("어르신이시군요");
	else
		out.write("잼민아..");
	%>
</body>
</html>

- 출력시에는 도메인에 ?age=나이입력 하면 저 조건에 맞는 멘트가 나온다

 

 

- write,out > 출력도구 (system.out.print는 콘솔출력도구니까..)

* 기본적으로 서블릿 입출력도구는 입력 request 출력 response 인데 편리하게 writer 형태도 out도 준비

 

 

 

 

 

	//하지만 쌤은 괄호를 넣고 하심..!!!!!
    <%if(age > 28){%>
		out.write("나이가 대따 많으시내용");
	<%}else {%>
		out.write("잼민아..");
	<%} %>

 

 

 

	<% for(int i=0; i<cnt; i++){ %>
	    안녕하세요 <%=i+1%>번
	    <br>
	 <%} %>
     //자바코드로 바꿀 부분만 코드블럭으로 감싸고,
     //출력하고싶은 문자열들을 코드블럭에서 빼고

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

- 화면 출력을 위한 변수 : model

 

 

 

 

 

 

 

 

- 사용자 요구사항에 해당하는 모델들을 뽑아내는 코드 : controlar

 

 

- 모델을 사용하는애 : view

 

 

 

 

 

 

- 코드를 스파게티로 만들지 말고 mvc로 만들어라

 

 

 

- 컨트롤은 서블릿으로 하고, 출력은 jsp로 하는방식이 가장 이상적이다 

 

 

 

- jsp부분은 데이터를 요청하면 안된다. 출력부분이기 때문에

 

 

 

 

 

 

package kr.co.rland.web.controller.menu;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import kr.co.rland.web.entity.Menu;


//데이터 마련(왼쪽은 데이터 활용)
//여기서 출력할 값을 만들고

@WebServlet("/menu/detail") 
public class DetailController extends HttpServlet
{
    public void service(HttpServletRequest request
         ,HttpServletResponse response)
         throws IOException,ServletException{
         //------<요청에 대한 값>---------------
         //http://localhost:8080/hello?id=737 
         String id_ = request.getParameter("id");
         int id = Integer.parseInt(id_); 
    
//       ------< 데이터 로드 >--------------------------------------------
       Menu menu = null;
       {
          String driverClassName ="org.mariadb.jdbc.Driver";
          String url = "jdbc:mariadb://db.newlecture.com:3306/rlanddb";
          
          try {
            Class.forName(driverClassName);
            Connection con = DriverManager.getConnection(url,"rland","20220823");
            System.out.println(con.isClosed());
             
             PreparedStatement st = con.prepareStatement("select * from menu where id=?");
             st.setInt(1,id); //위의 숫자로 바꾼 id를 쿼리문에 세팅
             ResultSet rs = st.executeQuery();
             
             if(rs.next()) {
                menu = new Menu(
                      rs.getInt("id"),
                      rs.getString("name"),
                      rs.getInt("price"),
                      rs.getString("img"),
                      rs.getDate("reg_date"),
                      rs.getInt("reg_member_id")
                      );
             }
             rs.close();
             st.close();
             con.close();
         } catch (ClassNotFoundException e) {
            e.printStackTrace();
         } catch(SQLException e){
            e.printStackTrace();
         }
       }  

    }
}

 

 

<!-- 데이터 출력만하는곳 
여기에서는 출력만 한다.
-->


<%@ 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>
   	<div><a href="list">메뉴목록</a></div>
   	<section>
   		<h1>아메리카노</h1>
   		<form>
   			<fieldset>
   				<div>
   					<label>이미지</label>
   					<span><img src=""></span>
   				</div>
   				<div>
   					<label>설명</label>
   					<span>알랜드만의 로스팅 기법으로 볶은 원둘ㄹ.....</span>
   				</div>
   				<div>
   					<label>가격</label>
   					<span></span>
   				</div>				
   			</fieldset>
   		</form>
   	</section>
</body>
</html>

 

 

 

 

       request.
       getRequestDispatcher("/WEB-INF/view/menu/detail.jsp").
       forward(request, response);
       //출력을 담당하는 애한테 권환을 위임하는 것

- forward : 서블릿 코드 보내줄게~ 실행은 너가 해줘~~~

 

 

 

 

 request.setAttribute("m", menu);
       //키:m 데이터:menu
      //jsp의 리퀘스트와 같은 리퀘스트이다. 왜? forward로 보내줬으니

- 리퀘스트: 사용자가 보낸 데이터를 저장 하는 능력과 동시에, 내가 원하는 값을 담을수도 있다

 

 

 

 

 

 

 

 

728x90

'국비수업 > 수업정리' 카테고리의 다른 글

Maven  (0) 2023.05.25
JSP / 3 + JSTL  (0) 2023.05.24
JSP  (0) 2023.05.22
쓰레드  (0) 2023.05.19
Stream Api + 컬렉션 / 3  (0) 2023.05.18