JSP & Servlet

[ Servlet ] 나만 보는 간단정리 part2

hanjuCoding 2024. 7. 31. 11:41

 

나도 코딩 잘하고싶다

 

Servlet이 톰캣 내부에서 동작하는 과정

회색박스는 톰캣 , 순서: 클라이언트 → 톰캣 → 서블릿 → DB → 서블릿 → 톰캣 → 클라이언트

 

호스트

ex) xxx.naver.com

→ ‘xxx’를 호스트라고 한다.

<body>
	<img src='/thisisforstudy/img/google.png'>
</body>	

이미지는 img/google.png 위치에 있다. but 앞에 project이름 thisisforstudy를 붙여줘야함.

→ tomcat 더블클릭 →web modules 창에서 path를 edit 해준다 . ex)/pro05 → / 로 수정

그럼

<body>
	<img src='/img/google.png'>
</body>	

로 코드 작성해도댐

제일 많이 쓰는방식: jsp 코드 달아주기

<img src="<%=request.getContextPath() %>/img/google.png">
//contextPath가 무엇이던간에 이어준다.

request 객체 (요청)

  • .getSession()
  • .getParameter() : String타입으로 객체를 받음
  • .getParameterValues() : 객체를 String배열로 받음
  • .getAttribute()
  • .setAttribute()
  • getParameterNames() : enum타입으로 객체의 속성명을 받음 (모든 속성명)

response 객체 (응답)

  • .sendRedirect()

WebServlet 어노테이션

@WebServlet 어노테이션으로 Servlet 매핑 코드 대체하기 web.xml 파일에 Servlet 매핑 코드를 작성하지 않아도 된다.

@WebServlet(value= {"/third","/thrid2"})
public class ThirdServlet extends HttpServlet{
			//,,,
}

 


DB연동

  • D:\java\workspace\pro07\src\main\webapp\WEB-INF\lib 경로에 ojdbc.jar 파일 넣기

Statement vs PreparedStatement

  • Statement : SQL문 그대로 실행
  • PreparedStatement : SQL미리 준비시켜놓고, 특정값만 삽입해서 실행

PreparedStatement가 훨씬 빠르다. (문법도 간단함) ⇒ ‘ ? ‘ 쓰는놈

//psmt ex
String query = "insert into t_member";
query += "(id,pwd,name,email)";
query += "values(?,?,?,?)";
System.out.println("prepareStatement:" +query );

servlet과 DB연동 과정

Severs / context.xml 수정

→프로그램을 실행시킬때마다 connDB() 메서드를 실행시키면 속도가 떨어진다

    <Resource
			name = "jdbc/oracle"
			auth = "Container"
			type = "javax.sql.DataSource"
			driverClassName="oracle.jdbc.OracleDriver"
			url="jdbc:oracle:thin:@localhost:1521:XE"
			username="testuser"
			password="user1234"
			maxActive="50"
			maxWait="-1"
		/>
		//context.xml에  <Context>문 안에 추가

doGet(), doPost() 하나로 묶기

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		process(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		process(request, response);
	}
	
	protected void process(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//여기에서 동작
	}

SQL꿀팁

//ex) 
query = select * from t_member where 1=1;
//1번검색
query += 'and where name like "" ';
//2번검색
query += 'and where ID like "" ';
//3번검색
query += 'and where email like "" ';

//쿼리에 어떤게 들어올지 모르니까 전부 다 and를 해주고, 원래 query에 where 1=1을 해주어
//뒤에 어떤애가 와도 상관없게 한다.