오랜만에 쓰는 게시글이다.

 

이번에는 React를 공부하면서 'Front에서 모든 데이터를 다 처리해야하나? 다른 Back-end 없이?' 라는 생각이 들어서 검색을 열심히 해본결과, Express랑 연동을 하면 된다는 정보를 찾아서 간단한 예제부터 만들어보기로 했다.

 

먼저 Directory Struct부터 보면 간단하게 구성을 했다.

React_Express

|--Server

|--Client

 

다음으로는 Express 설치와 React 설치를 진행한다.

1
2
3
4
5
npm install -g express-generator
npm install -g create-react-app
express server
create-react-app client
cd server && npm install
cs

Express설치 후 express 명령을 통해 server 폴더를 생성하고 create-react-app을 이용하여 client 폴더를 생성한 뒤, express에 필요한 파일을 설치하였다.

제대로 설치가 되었디면 server, client폴더에서 아래의 명령어를 실행했을 때 각각의 페이지가 나오면 성공이다.

1
npm start
cs

 

이제 여기서 React가 Express를 호출하도록 proxy 설정을 해주어야하는데 이는 client 폴더의 package.json에서 설정이 가능하다. 아래와 같이 최하단에 proxy 설정을 해주면 되는데, 이 때 접속 route는 Express가 사용하는 route를 적으면 된다. 필자는 3000번 포트를 이용하기 때문에 아래와 같이 작성하였다.

 

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
29
30
31
32
33
34
35
36
{
  "name": "client",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.5.0",
    "@testing-library/user-event": "^7.2.1",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-scripts": "3.4.3"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "proxy": "http://localhost:3000/"
}
 
cs

 

여기까지 진행을 하였으면 일단 React가 Express에 접근을 할 수 있게 설정을 한 것이다.

 

'Web' 카테고리의 다른 글

IntelliJ에서의 Servlet 프로젝트 설정 방법  (0) 2019.09.19
젠킨스 사용해보기  (0) 2017.12.31
Servlet 기초(2)  (0) 2016.11.11
Servlet 기초(1)  (0) 2016.11.11

Servlet을 공부하다가 나중에 까먹을까봐 적어놓는다.


준비물

1. Tomcat 설치

2. IntelliJ

3. JDK 최신버전

 

자바 환경설정은 필수이며, 이 과정은 패스하겠다.

또한 Tomcat 설치 경로는 필히 기억하면 좋을 것 같다.

...귀찮아서 사진 안넣을거다..


IntelliJ에서 Project를 생성한다.

- Java를 클릭하면 Java EE -> Web Application이 보인다. 클릭하자.

- Create web.xml가 체크되있을텐데 냅두면 된다.

- 프로젝트 이름은 걍 알아서 만든다.

 

Project가 생성되면 오른쪽 클릭 -> Project Settings에 들어간다.

- HttpServlet 라이브러리를 추가해주는 작업을 진행해야한다.

- 왼쪽 메뉴에 Libraries가 보이는데 오른쪽 클릭인가.. 하튼 누르면 From Maven이 나온다.

- 'tomcat:servlet'을 치면 여러개가 나오는데 첫 번째꺼 클릭하면된다. (검색시간이 좀 걸린다.)

 

Project 폴더에 src에서 이제 servlet-class를 만든다.

- src 오른쪽 클릭 - > Servlet(혹은 Servlet 어쩌구가 있다.)

- doGet, doPost 간단하게 작성해본다. ( 인터넷에 많이 널려있다 찾아보자. )

 

web.xml로 들어가서 servlet, servlet-mapping을 설정하자.

- 이 부분도 인터넷에 널려있다.

- servlet 태그에는 servlet-name, servlet-class가 있는데 name은 별칭, class는 src에 있는 class이다. (package가 있다면 붙여주자. ex. ex.Servlet)

 

tomcat 연동을 해보자.

- 오른쪽 상단에 Edit Configuration을 누른다.

- Templates -> tomcat server 찾는다.(TomEE server 아니다.)

- 누르면 Local과 remote가 보이는데 local 작업이니 local 누른다.

- Application Servers가 비어있을텐데, 클릭해서 Tomcat Home에 설치한 경로를 넣어준다. ( 자동으로 libraries가 들어갈거다. )

- 다른거 건들지말고 JRE 경로를 Java jdk 설치한 경로로 잡아준다.

- 아래 HTTP port는 기본으로 8080이다. 

 

이제 실행하면 된다.


 

*만약 out of range라는 오류가 나오면 Tomcat 폴더에 들어가서 server.xml을 찾아봐야한다.

Ctrl + F를 눌러서 '-1'을 검색하면 <Server port="-1" shutdown="SHUTDOWN"> 이부분이 나오는데

-1부분을 8090으로 바꾸자. 만약 8080으로 하면 충돌일어나서 실행안될거다. 

'Web' 카테고리의 다른 글

React와 Express 연동하기(1)  (0) 2020.09.11
젠킨스 사용해보기  (0) 2017.12.31
Servlet 기초(2)  (0) 2016.11.11
Servlet 기초(1)  (0) 2016.11.11

젠킨스(Jenkins) ? 


이번에 동아리 선배랑 같이 프로젝트를 하면서 젠킨스라는 것을 사용하기로 했다.


젠킨스는 자동적으로 배포를 도와주는 툴이라고 설명이 되어있다. ( 젠킨스에 대한 설명이 적힌 링크 )

젠킨스는 Docker와 연관이 많은데 Docker에 대해서는 따로 정리를 할 예정이다. ( docker 모르면 해당 링크 참조 )






설치 OS는  ubuntu 64bit로 아마존 AWS를 사용하였다.


jenkins를 설치하려면 우선 docker가 설치되어야 한다.

따라서 docker를 먼저 설치하면 된다.


1
curl -fsSL https://get.docker.com/ | sudo sh
cs


root 권한을 요청 할 수도, 요청하지 않을 수도 있다.


다음으로는 root가 아닌 다른 user에게 docker를 실행 할 수 있는 권한을 넘겨줘야 한다.


1
sudo usermod -aG docker $USER 
cs

짜잔! 이러면 docker를 설치 및 권한까지 부여해주었다!


이제 Jenkins를 설치할 차례이다.

1
docker pull jenkins

cs


아래와 같이 입력했을 때 오류가 난다면 위에서 user에게 권한을 준 뒤 재 로그인을 하지 않았기 때문이다.

다시 로그인을 해주면 설치가 될 것이다.


Jenkins를 무사히 설치 했다면 이제 실행을 해볼 차례!


1
$ docker run -d -p 8080:8080 -v /jenkins:/var/jenkins_home --name jenkins -u root jenkins
cs

위와 같은 명령어를 치면 실행이 된다. ( 각 옵션은 아직 공부를 안해서. 더 공부한 뒤 옵션에 대한 세부 내용을 작성해야겠다. )


- 작성중




'Web' 카테고리의 다른 글

React와 Express 연동하기(1)  (0) 2020.09.11
IntelliJ에서의 Servlet 프로젝트 설정 방법  (0) 2019.09.19
Servlet 기초(2)  (0) 2016.11.11
Servlet 기초(1)  (0) 2016.11.11
  • form method에 따른 정보 전달
    • 1
      2
      <form action="JOIN.do" method="GET">
      <form action="JOIN.do" method="POST">
      cs

위와 코드에 따른 처리 방식을 알아보자. 

method="GET"일 경우

- URL = http://localhost:8000/web/JOIN.do?id="test"&pw="1234"

method="POST"일 경우

- URL = htpp://localhost:8000/web/JOIN.do

다른 점은 url에 데이터가 붙냐 안붙냐의 차이.

    • Java에서는 어찌 받을까?

      • doGet()
        • 1
          2
          3
          4
          protected void doGet(HttpServletRequest req, HttpServletResponse, res){
              String id = req.getParameter("id");
              String pw = req.getParameter("pw");
          }
          cs

      • doPost()
        • 1
          2
          3
          4
          protected void doPost(HttpServletRequest req, HttpServletResponse, res){
              String id = req.getParameter("id");
              String pw = req.getParameter("pw");
          }
          cs


      • 둘다 받는 방식은 똑같다. (HttpServletRequest를 이용해서 Parameter을 받아온다.)


    • 한글 인코딩
      • Get방식과 Post방식은 인코딩의 차이가 있다.
      • Get
          • Server.xml을 수정한다.
          • 1
            <Connector URlEncoding="EUC-KR">
            cs

      • Post
        • 1
          req.setCharacterEncoding("EUC-KR");
          cs

          • 위 코드를 doPost()내부에 적어주면 된다.


'Web' 카테고리의 다른 글

React와 Express 연동하기(1)  (0) 2020.09.11
IntelliJ에서의 Servlet 프로젝트 설정 방법  (0) 2019.09.19
젠킨스 사용해보기  (0) 2017.12.31
Servlet 기초(1)  (0) 2016.11.11

Servlet Flow

Servlet 

Generic Servlet 

HttpServlet

아래에서 위로 상속을 받는다.

Servlet은 HttpServlet을 상속받는데 extends HttpServlet을 해줘야한다.

그 사이에 Generic Servlet이라는 abstract가 존재하는데 사실 잘 모르겠다.


GET & POST

GET : URL 뒤쪽에 정보가 붙어 전송된다. -> 보안에 약하다.

POST : Header을 이용해 정보를 전송한다. -> 보안에 강하다.(강하다고 해야할지..)


doGet()

form 태그의 method="get" 일 경우 doGet()이 호출 된다.

인자는 HttpServletRequest, HttpServletResponse 를 받는다.(doPost도 마찬가지.)


doPost()

form 태그의 method="post"일 경우 doPost()가 호출된다.

인자는 doGet과 동일 하다.


Servlet 작동 순서

웹 -> 웹서버(WS) -> 웹 어플리케이션 서버(WAS) -> Servlet Container 

Servlet Container에서도 첫번째로 작동하는 것은 스레드 생성. 두번째는 Servlet 객체를 생성하는 것이다.


Servlet LifeCycle


Servlet은 응답속도가 빠른편이라 사용률이 높다.


왜 속도가 빠른가?

Servlet은 요청을 받아 객체가 생성되면 그 뒤로 객체를 재활용 하기 때문.(메모리에 로딩이 된다.)

       Servlet 객체 생성

       init() 호출

       service(), doGet(), doPost()호출

       destroy() 호출

위 표에서 진행 방향은 위 -> 아래 이다.

Servlet객체를 생성하면 init함수를 호출한다. 

init함수는 객체가 가지고 있어야할 정보를 가져오거나 준비하는 역할이다.

따라서 Servlet객체는 재활용 되므로 한번만 실행된다. ( Servlet객체 생성도 한번, init도 한번)

service(), doGet(), doPost()는 웹에서 호출하면 계속해서 함수가 불려진다.

destroy()함수는 마지막에 Servlet객체를 메모리에서 해제 시킬 때 한번 호출된다.


'Web' 카테고리의 다른 글

React와 Express 연동하기(1)  (0) 2020.09.11
IntelliJ에서의 Servlet 프로젝트 설정 방법  (0) 2019.09.19
젠킨스 사용해보기  (0) 2017.12.31
Servlet 기초(2)  (0) 2016.11.11

+ Recent posts