이클립스 실행해서 자바프로젝트로 만들어서 컴파일 된 class파일이 

WEB-INF 폴더 밑에 classes 폴더를 만들어서 class 파일이 들어가게 변경함.

그리고 Libraries에서 Add External Jars 눌러

C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib\servlet-api.jar 추가함.


web.xml 에서 

  <display-name>Welcome to 0610 Web Project </display-name>

  <description>

     Welcome to Tomcat

  </description>

  

  <servlet>

<servlet-class>GreetServlet</servlet-class>

<servlet-name>aaa</servlet-name>

  </servlet>

  <servlet-mapping>

     <servlet-name>aaa</servlet-name>

<url-pattern>/servlet/bbb</url-pattern>

  </servlet-mapping>

</web-app>

위처럼 바뀐부분만 바꿔주고


GreetServlet.java는 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.PrintWriter;

import java.io.IOException;


public class GreetServlet extends HttpServlet{

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

res.setContentType("text/html;charset=utf-8");   //여기에 charset=utf-8을 써줘야 한글 됨.

PrintWriter out = res.getWriter();

out.println("<!DOCTYPE html><html lang=\"ko\">");

out.println("<head><title>Welcome Hello Servlet!</title>");

out.println("<meta charset='utf-8'>");

out.println("<style>");

out.println("body { background-color:yellow;font-size:1.5em;}");

out.println("div { color:blue;font-weight:900; }");

out.println("</style></head><body>");

out.println("<div>안녕하세요. 서블릿</div>");

out.println("</body></html>");

out.close();

}

}

위와 같이 써주고 저장.

여기서 0610 폴더에 src폴더에 GreetServlet.java가 있는 것이고, 0610/classes 폴더에 GreetServlet.class가 있고 0610/WEB-INF 폴더에 web.xml 파일이 있음.


C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf 폴더에서 server.xml에서

<Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true"> 라고 써진 곳 밑에

<Context path="/0610" docBase="D:/WebHome/0610" debug="0" reloadable="true" crossContext="true" previleged="true" /> 를 붙여 넣어줌.

그리고 tomcat 서비스를 stop 후 start.

웹브라우저에서 http://localhost:8080/manager/html 로 들어가보면 /0610의 경로가 추가된 것을 볼 수 있다.

http://localhost:8080/0610/servlet/bbb 로 들어가면 안녕하세요. 서블릿 을 볼 수 있다.

---------------------------

다른 것을 추가했다면 

web.xml 은

  <display-name>Welcome to 0610 Web Project </display-name>

  <description>

     Welcome to Tomcat

  </description>

  

  <servlet>

<servlet-class>GreetServlet</servlet-class>

<servlet-name>aaa</servlet-name>

  </servlet>

  <servlet>

<servlet-class>VisitServlet</servlet-class>

<servlet-name>visit</servlet-name>

  </servlet>

  <servlet-mapping>

     <servlet-name>aaa</servlet-name>

<url-pattern>/servlet/bbb</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

     <servlet-name>visit</servlet-name>

<url-pattern>/servlet/visit</url-pattern>

  </servlet-mapping>

</web-app>

처럼 바꿔주고

VisitServlet.java 는

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.PrintWriter;

import java.io.IOException;

import java.util.Date;

import java.text.SimpleDateFormat;


public class VisitServlet extends HttpServlet{

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

res.setContentType("text/html;charset=utf-8");

PrintWriter out = res.getWriter();

out.println("<!DOCTYPE html><html lang=\"ko\">");

out.println("<head><title>Welcome Hello Servlet!</title>");

out.println("<meta charset='utf-8'>");

out.println("<style>");

out.println("body { background-color:yellow;font-size:1.5em;}");

out.println("div { color:blue;font-weight:900; }");

out.println("span {color:red;}");

out.println("</style></head><body>");

out.println("<div>");

String pattern = "귀하가 방문한 날짜와 시간은 Y년 M월 d일 H시 m분 s초 입니다.";

SimpleDateFormat sdf = new SimpleDateFormat(pattern);

String str = sdf.format(new Date());

out.println("<span>" + str + "</span></div>");

out.println("</body></html>");

out.close();

}

}

그리고 web.xml을 바꿨으니 http://localhost:8080/manager/html 에 가면  /0610 의 경로를 Reload 해야함.(서비스 재시작 하는것보다 효율적이므로)

-------------------------

    submit 버튼을 통해 전달.

member.html

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>회원정보</title>

</head>

<body>

<form method="get" action="/0610/servlet/info"> <!-- URL Pattern(Servlet Pattern) -->

<p><label>ID : <input type="text" name="userid"></label></p>

<p><label>Password : <input type="password" name="userpwd"></label></p>

<p><label>Name : <input type="text" name="irum"></label></p>

<p><input type="submit" value="전송"></p>

</form>

</body>

</html>


GetPostServlet.java

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.PrintWriter;

import java.io.IOException;


public class GetPostServlet extends HttpServlet{

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

String userid = req.getParameter("userid");

String userpwd = req.getParameter("userpwd");

String irum = req.getParameter("irum");

res.setContentType("text/html;charset=utf-8");

PrintWriter out = res.getWriter();

out.println("<!DOCTYPE html><html lang=\"ko\">");

out.println("<head><title>Welcome Hello Servlet!</title>");

out.println("<meta charset='utf-8'>");

out.println("</head><body>");

out.println("<ul>");

out.println("<li>아이디 : " + userid + "</li>");

out.println("<li>패스워드 : " + userpwd + "</li>");

out.println("<li>이름 : " + irum + "</li>");

out.println("</ul>");

out.println("</body></html>");

out.close();

}

}


web.xml

  <display-name>Welcome to 0610 Web Project </display-name>

  <description>

     Welcome to Tomcat

  </description>

  

  <servlet>

<servlet-class>GreetServlet</servlet-class>

<servlet-name>aaa</servlet-name>

  </servlet>

  <servlet>

<servlet-class>VisitServlet</servlet-class>

<servlet-name>visit</servlet-name>

  </servlet>

  <servlet>

<servlet-class>GetPostServlet</servlet-class>

<servlet-name>ccc</servlet-name>

  </servlet>

  

  <servlet-mapping>

     <servlet-name>ccc</servlet-name>

<url-pattern>/servlet/info</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

     <servlet-name>aaa</servlet-name>

<url-pattern>/servlet/bbb</url-pattern>

  </servlet-mapping>

  <servlet-mapping>

     <servlet-name>visit</servlet-name>

<url-pattern>/servlet/visit</url-pattern>

  </servlet-mapping>

</web-app>

//Get방식의 좋은점은 url을 통해 정보 변경가능.

만약에  form method="post" 으로 보내면 doPost 로 받아줘야한다. 만약 get으로 보냈는데 doPost로 받았다면 405 에러가 발생한다.

그래서 둘다 처리해주기 위해서 GetPostServlet.java에 

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

this.doPost(req, res);

}

public void doPost(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

req.setCharacterEncoding("utf-8"); //post방식만 해당

String userid = req.getParameter("userid");

이런식으로 get방식이어도 doPost를 호출하게 만들어주면 된다.

그리고 위에서 utf8로 인코딩을 셋해줘야 한글이 깨지지 않는다. 이것은 post방식만 해당된다.

그리고 get 방식은 C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\server.xml 에서

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" /> 를

    <Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />  이렇게 바꿔준다

server.xml을 바꿨으니 tomcat을 재시작.

그러면 get방식도 한글이 꺠지지 않게 할 수 있다. 만약 이것이 안되면 en to ko, ko to en 방식을 사용해야함.

난 안되니 en to utf8 방법을 사용.

따라서 한글 문제를 해결한 GetPostServlet.java 는

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.PrintWriter;

import java.io.IOException;


public class GetPostServlet extends HttpServlet{

private String entoutf8(String en){

String utf8 = null;

try{

utf8 = new String(en.getBytes("ISO8859_1"), "UTF-8");

}catch(java.io.UnsupportedEncodingException ex){}

return utf8;

}

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

this.doPost(req, res);

}

public void doPost(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

req.setCharacterEncoding("utf-8");   //post 방식만 해당

String userid = req.getParameter("userid");

String userpwd = req.getParameter("userpwd");

String irum = this.entoutf8(req.getParameter("irum"));

res.setContentType("text/html;charset=utf-8");

PrintWriter out = res.getWriter();

out.println("<!DOCTYPE html><html lang=\"ko\">");

out.println("<head><title>Welcome Hello Servlet!</title>");

out.println("<meta charset='utf-8'>");

out.println("</head><body>");

out.println("<ul>");

out.println("<li>아이디 : " + userid + "</li>");

out.println("<li>패스워드 : " + userpwd + "</li>");

out.println("<li>이름 : " + irum + "</li>");

out.println("</ul>");

out.println("</body></html>");

out.close();

}

}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

정리

한글문제

1. HTML/CSS3/JavaScript

  1)저장할 때 utf-8 로

  2)charset : utf8 로

2. Servlet

  1)rendering : res.setContentType("text/html;charset=utf-8");

  2)post 방식으로 들어올 때 : req.setCharacterEncoding("utf-8");

  3)get 방식으로 들어올 때

    a. server.xml 에서 <Connector URIEncoding="utf-8">

    b. private String entoutf(String en) ... 사용할 것

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

==========================================

버츄얼 우분투 부팅

나비가 오른쪽 위로 가게하는 법.

sudo add-apt-repository ppa:createsc/3beol

sudo apt-get update

sudo apt-get upgrade 재붓

그리고 

www.apache.org -> HTTP Server -> Apache httpd 2.4.9 Released  에 Downloads 클릭.

httpd-2.4.9.tar.gz 선택해서 다운.

터미널 켜서 tar xvfz httpd-2.4.9.tar.gz

터미널에서 gcc --version 으로 gcc가 있는지 확인.

http://apr.apache.org/ 로 이동.

Apache Portable Runtime 1.5.1 Released 에서 Downloads 선택

apr-1.5.1.tar.gz

apr-util-1.5.3.tar.gz

두개 다운.

http://pcre.org/ 이동.

아무거나 눌러 https://sourceforge.net/projects/pcre/files/pcre/ (난 이걸눌렀고)

8.35 누르고 pcre-8.35.tar.gz 눌러 다운.


터미널켜서 tar xvfz apr-1.5.1.tar.gz  쳐서 알집 풀고

cd apr-1.5.1

./configure \

> --prefix=/usr/local/apr 엔터

make 엔터

sudo make install

다시 Downloads 폴더로 가서

tar xvfz apr-util-1.5.3.tar.gz 풀고

./configure \

> --prefix=/usr/local/apr-util \

> --with-apr=/usr/local/apr

make

sudo make install

다시 Downloads 폴더로 이동.

sudo apt-get install gcc-c++    -> 실패함.

그래서  sudo apt-get install g++ 로 g++깔아줌.

tar xvfz pcre-8.35.tar.gz

cd pcre-8.35

./configure \

> --prefix=/usr/local/pcre

make

sudo make install

cd ..

cd httpd-2.4.9

./configure \

> --prefix=/usr/local/apache2 \

> --with-apr=/usr/local/apr \

> --with-apr-util=/usr/local/apr-util \

> --with-pcre=/usr/local/pcre \

> --enable-mods-shared=most \

> --enable-module=so \

> --enable-rewrite

make

sudo make install

cd /usr/local/apache2

cd bin

sudo cp apachectl /etc/init.d/httpd

cd ..

cd conf

vi httpd.conf 들어가서

ServerAdmin 87minho@hanmail.net

ServerName localhost:80

    AllowOverride none 밑을 

    Allow from all 으로 

service httpd start

그리고 웹브라우저에서 localhost 하면 It works! 를 볼 수 있다.

그리고

cd /usr/local/apache2/conf 에서 sudo vi httpd.conf

DocumentRoot "/WebHome"

<Directory "/WebHome"> 이렇게 바꿔주고

index.html을 WebHome 폴더에 넣어주고 

sudo service httpd stop

sudo service httpd start

하고 웹브라우저에서 localhost 들어가면 index.html을 볼 수 있다.

sudo apt-get install gufw 로 파이어월을 켜서 80번포트를 열어 윈도우에서 웹브라우저에 아이피를 적어놓으면 된다.

---------------------------

http://tomcat.apache.org/ 접속.

Tomcat 7.0.54 Released 에서 Downloads 눌러

7.0.54 에서 Core:의 tar.gz 다운

다운로드 폴더로가서

tar xvfz apache-tomcat-7.0.54.tar.gz

sudo mv apache-tomcat-7.0.54 /usr/local/tomcat7 

sudo apt-get install openjdk-7-jre

sudo add-apt-repository ppa:nilarimogard/webupd8

sudo apt-get update

sudo apt-get install update-java

실행은 sudo update-java

java-7-openjdk 선택

cd /usr/lib/jvm 에서 선택한 openjdk 이름 확인.

cd /usr/local/tomcat7/bin

sudo gedit catalina.sh  들어가서

#!/bin/sh 밑에

JRE_HOME="usr/lib/jvm/java-7-openjdk-amd64/jre" 를 추가.

톰캣의 start를 해줌 sudo ./startup.sh

localhost:8080 들어갔는데 안됨

sudo gedit /etc/profile 에서 제일 밑에 

export CATALINA_HOME=/usr/local/tomcat7

export JRE_HOME=/usr/lib/jvm/java-7-openjdk-amd64

export PATH=$PATH:$JRE_HOME/bin:$CATALINA_HOME/bin  

를 추가함.

source /etc/profile

echo $CATALINA_HOME

cd /usr/local/tomcat7/bin/

./startup.sh 했는데 웹브라우저에서 localhost:8080 또 실패해서

www.oracle.com 이동. Downloads-java for your computer 에서 free java download 누르고

Linux x64 filesize: 44.8 MB  다운.

Downloads 폴더로 이동해서 

tar xvfz jre-7u60-linux-x64.tar.gz

sudo mv jre1.7.0_60 /usr/lib/jvm/jre1.7.0_60

cd /usr/lib/jvm

sudo update-alternatives --config java   로 몇번까지 차있는지 확인.

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jre1.7.0_60/bin/java 3

sudo update-alternatives --config java 하고 3 을 써줘서 3번을 써준다고 선언.

java -version 하면 1.7.0_60 버전이라고 나옴.

sudo gedit /usr/local/tomcat7/bin/catalina.sh   써서

아까 추가했던 JRE_HOME 의 경로를 아래와 같이 바꿔줌.

JRE_HOME="/usr/lib/jvm/jre1.7.0_60"

그리고 sudo gedit /etc/profile 도 아래와 같이 바꿔줌.

export CATALINA_HOME=/usr/local/tomcat7

export JRE_HOME=/usr/lib/jvm/jre1.7.0_60

export PATH=$PATH:$JRE_HOME/bin:$CATALINA_HOME/bin

source /etc/profile

cd /usr/local/tomcat7/bin

sudo ./startup.sh

웹브라우저에서 localhost:8080 들어가주면 됨

이제 매니저를 깔아주면

cd ..

cd conf

sudo gedit tomcat-users.xml 들어가서

 <!.. ..> that surrounds them.

-->  밑에

<user username="admin" password="javatomcat" roles="adnib-gui,manager-gui"/>  를 넣어줌.

cd ..

cd bin

sudo ./shutdown.sh

sudo ./startup.sh


이제 manager app들어가서 homecontext.xml 을 만들어 webapps 에 넣고 하는 전에 했던거 해주고, 

방화벽 8080 열어줘서 윈도우에서 들어올 수 있는지 확인.


http://tomcat.apache.org/download-connectors.cgi  들어가서

Tomcat Connectors JK 1.2 에서 JK 1.2.40 Source Release tar.gz 다운.

tar xvfz tomcat*.tar.gz 로 알집 풀어주고

cd tomcat-connectors-1.2.40-src

cd native

./configure --with-apxs=/usr/local/apache2/bin/apxs

make

sudo make install

cd /usr/local/apache2

cd modules

ls mod_jk.so 가 있으면 잘 설치 된거임.

cd ..

cd conf

sudo gedit httpd.conf  들어가서

#LoadModule rewrite_module modules/mod_rewrite.so 밑에

LoadModule jk_module modules/mod_jk.so

JkWorkersFile conf/workers.properties

JkLogFile logs/mod_jk.log

JkLogLevel info

JkLogStampFormat "[%a %b %d %H:%M:%S %y]"

JkMount /*.jsp loadbalancer

JkMount /*servlet/* loadbalancer

를 추가해줌.

sudo gedit workers.properties  해서

worker.list=loadbalancer

worker.tomcat1.type=ajp13

worker.tomcat1.host=localhost

worker.tomcat1.port=8008

worker.tomcat1.lbfactor=1

worker.tomcat2.type=ajp13

worker.tomcat2.host=localhost

worker.tomcat2.port=8009

worker.tomcat2.lbfactor=1

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=tomcat1,tomcat2

작성 후 저장. 

sudo service httpd stop

sudo /usr/local/tomcat7/bin/shutdown.sh

sudo /usr/local/tomcat7/bin/startup.sh

sudo service httpd start

그리고 웹브라우저에서

http://localhost:8080/examples/jsp/jsp2/el/basic-arithmetic.jsp  해보고

8080지워서도 해보고 되나 확인.





+ Recent posts