Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

main

[JSP] MVC 패턴 세팅하기 본문

Java

[JSP] MVC 패턴 세팅하기

1984 2022. 11. 13. 21:49

1. UTP-8 세팅하기

 

 

2.기타 세팅

(1) 웹브라우저 설정

(2) 폰트설정

 

3. 주의할 점

(1) 현재 톰캣이 실행되고 있는지 확인하기 (cmd 관리자권한으로 실행 )

//포트 목록보기
netstat -ano
//포트 종료하기
taskkill /f /pid 프로세스 번호

(2) 현재 DB가 실행되고 있는지 확인하기(작업관리자 창에서)

 

4. 프로젝트 생성, 서버 생성

(1)프로젝트 생성

(2) 톰캣 설정하기

C:\Program Files\Apache Software Foundation\Tomcat 8.5

(3) javax로 시작하는 클래스는 모두 톰켓 라이브러리이다. 오류가 난다면 빌드패스를 확인하자

(4) 서버 생성하기

 

5. 프로젝트 실행해보기

(1) web.xml에 welcom file list 확인해보기

(2) index.jsp 파일 만들고 실행하기

6. JSTL 연결하기

(1)참고 주소

https://www.apache.org/dist/tomcat/taglibs/taglibs-standard-1.2.5/README_bin.txt

(2)라이브러리 파일

 

(3)태그 (JSTL이 필요한 파일에 태그를 작성해준다)

CORE LIBRARY
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

7. Datasource 연결하기

(1) 참고주소

https://tomcat.apache.org/tomcat-8.5-doc/index.html

 

Apache Tomcat 8 (8.5.51) - Documentation Index

Notice: This comments section collects your suggestions on improving documentation for Apache Tomcat. If you have trouble and need help, read Find Help page and ask your question on the tomcat-users mailing list. Do not ask such questions here. This is not

tomcat.apache.org

(2)세팅을 위한 소스코드

*ojdbc6 는 자바와 오라클을 연결해주는 라이브러리이다.

* WEB-INF/lib 폴더에 넣으면 빌드 패스 필요없이 사용가능

* META-INF, WEB-INF 는 설정파일이 들어가는 곳이어서 보안이 걸려있음. 외부에서 접근 불가능

* context.xml과 web.xml 은 server가 들고 있는 파일을 오버라이딩 하여 사용 가능함.

WebContent/META-INF/context.xml

<?xml version="1.0" encoding="UTF-8"?>
<context>
	<Resource name="jdbc/myoracle" auth="Container"
		type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
		url="jdbc:oracle:thin:@127.0.0.1:1521:xe" username=""
		password="" maxTotal="20" maxIdle="10" maxWaitMillis="-1" />
</context>

WebContent/WEB-INF/web.xml

<web-app version="3.1"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee                       http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
	<resource-ref>
		<description>Oracle Datasource example</description>
		<res-ref-name>jdbc/myoracle</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>
</web-app>

src/com/cos/dao/DBConn.java

package dao;

import java.sql.Connection;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

public class DBConn {
	public static Connection getConnection() {
		try {
			Context initContext = new InitialContext();
			Context envContext  = (Context)initContext.lookup("java:/comp/env");
			DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
			Connection conn = ds.getConnection();
			System.out.println("DB연결 성공");
			return conn;
			//etc.
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
}

 

8.Factory 만들기

(1) action.java (인터페이스)

src/com/cos/action/Action.java

package com.cos.action;

import java.io.IOException;

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

public interface Action {
	
	//추상메소드; 메소드의 몸체가 없다.
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException;
}

(2)XXXFactory.java

src/com/cos/action/user/userFactory.java

package com.cos.action.user;

import com.cos.action.Action;

public class UserFactory {
	public static Action getAction(String cmd) {
		return null;
	}
}

(3)SampleAction.java

src/com/cos/action/user/userListAction.java

package com.cos.action.user;

import java.io.IOException;

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

import com.cos.action.Action;

public class UserListAction implements Action {
	@Override
	public void excute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
	}
}

 

9. Controller 만들기

src/com/cos/controller/UserController.java

package com.cos.controller;

import java.io.IOException;
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.cos.action.Action;
import com.cos.action.user.UserFactory;

//진입주소; http://localhost:8000/blog/user?cmd+list

@WebServlet("/User")
public class UserController extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public UserController() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//1.들어오는 모든 문자를 UTF-8로 인코딩
		request.setCharacterEncoding("UTF-8");
		//2.cmd값을 받아야 한다.
		String cmd = request.getParameter("cmd");
		//3.cmd검증
		if (cmd==null||cmd.equals("")) {
			cmd="list";
		}
		//4.factory 연결
		Action action = UserFactory.getAction(cmd);
		//5.execute 실행
		if (action!=null) {
			action.execute(request, response);
		}
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

 

10.Model 만들기

src/com/cos/model/User.java

package com.cos.model;

public class User {

}

필요할 때마다 테이블 별로 모델 만든다.

728x90
Comments