이클립스 실행해서 자바프로젝트로 만들어서 컴파일 된 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지워서도 해보고 되나 확인.
'Java & Oracle' 카테고리의 다른 글
우편번호 검색, 성적관리 프로그램 (0) | 2014.06.12 |
---|---|
DB연동, Servlet's Lifecycle, 3티어 연동 (0) | 2014.06.11 |
tomcat , apache & tomcat 연동 , servlet (0) | 2014.06.09 |
자바스크립트 Dom (0) | 2014.06.09 |
제품관리프로그램, dom : childNodes, nextSibling, attribute, 성적관리프로그램 (0) | 2014.06.05 |