My footsteps
JSP / 2 본문
- 코드블럭 : 코드가 그대로 옮겨지는 블럭
- 지시블럭: 코드를 만드는 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로 보내줬으니
- 리퀘스트: 사용자가 보낸 데이터를 저장 하는 능력과 동시에, 내가 원하는 값을 담을수도 있다
'국비수업 > 수업정리' 카테고리의 다른 글
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 |