가장 기본적인 부분을 갖고 있는 것은 JSP
J2EE에 가장 핵심적인 부분 - Servlet/JSP, EJB 등
JSP - 웹 프로그래밍, 호환이 잘 된다. 프레임 워크의 기술들도 쓸 수 있다. 대용량 프로젝트도 가능하다
전체적인 로직을 다 커버할 수 있어야 한다
ASP - .NET(MS 툴, 호환이 잘 되지 않는다)
PHP - LINUX,(대용량 프로젝트엔 취약하다)
게시판에 대한 알고리즘
웹 어플리케이션 서버(WAS) - JSP, JAVA언어가 서비스 가능하다,
대체적인 예로
TOMCAT이 있다
J2EE - 컨테이너 : Servlet, JSP, EJB
- 서비스 API : XML, JDBC, JTA, JMS, JNDI, JavaMail
Servlet
- ~let 끝나는 Language를 가지는 것은 독립된 실행환경을 갖는다.
- 순수한 자바코드를 웹 브라우저에서 실행
-> Servlet을 대안한 Language가 JSP
이클립스
jar 파일 땡겨오는 방법
1. JRE System Library -> exe폴더 > jar /JDK
2. Apache Tomcat -> lib -> jar /
3. web application
web.xml
url-pattern이 실행됐을 때, servlet-name 실행파일이름이 잇어야한다
이 xml파일을 수정하게 되면 Tomcat은 restart를 꼭 해야한다.
html은 문서가 보여지는 것에 대해 의미를 더 두고 있다면,
xml은 데이터들을 갖고 있는 것에 대해 의미가 더 크다
<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
서블릿 웹 어플리케이션 폴더와 URL 패턴
웹 브라우저(클라이언트) <-> WAS
-> ROOT
-> JSP
-> WEB-INF
-> lib : Web 어플리케이션 디렉토리(context)
-> classes : 서블릿 파일
-> Web.xml
위의 구조가 이런 식..
Project
-> src(java, servlet source)
-> Webcontent(html, JSP, CSS JavaScript 등)
-> WEB-INF
->lib
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
웹에선 httpServlet을 상속 받는다.
누구를 상속 받느냐.. 가 중요
API 메소드
doGet(request, response)
- request : 요청과 관련되어 있다.
- response : 요청에 대한 응답과 관련되어 있다.
Get방식
- 데이터를 공개하며 전달, URL창에서 많이 쓰인다.
Post방식
- 데이터를 공개하지 않고 전달, 로그인 폼 등에서 많이 쓰인다.
instance 생성 (서블릿 객체 생성)
init() (제일 먼저 호출되고 한번만 호출 되는 함수)
service() : doGet()
doPost()
(요청될 때마다 호출)
destroy() (톰캣 해제시 자원 해제)
예제1> 서블릿에서 한글 깨짐 방지
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class h1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//html로 보여주겠다는 뜻
response.setContentType("text/html;charset=euc-kr");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello world</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>안녕 World!!</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
예제2> POST 처리 방식의 폼
QueryString.html
<html>
<head>
</head>
<body>
<!-- 포스트 처리 방식 -->
<form method="post" action=" /servlet_exam/Test">
아 이 디 : <input type="text" name="id" size="20"> <br>
비밀번호 : <input type="password" name="pw" size="20"> <br>
회원이름 : <input type="text" name="name" size="20"> <br>
회원구분 : <input type="radio" name="class" value="일반회원"> 일반회원
<input type="radio" name="class" value="교수님"> 교수님<br>
전화번호 : <select name="phone1">
<option value="010"> 010 </option>
<option value="011"> 011 </option>
<option value="016"> 016 </option>
<option value="017" selected> 017 </option>
<option value="018"> 018 </option>
<option value="019"> 019 </option>
</select>
-
<input type="text" name="phone2" size="4" maxlangth="4">
-
<input type="text" name="phone3" size="4" maxlangth="4"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
Test.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;
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);
}
public void process(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//응답할때의 한글처리 (포스트 방식일경우)
response.setContentType("text/html;charset=KSC5601");
//폼에서 넘어 올때의 한글처리 (요청 오는것에 대한 한글 깨짐 방지, 포스트방식 일 경우)
request.setCharacterEncoding("KSC5601");
PrintWriter out = response.getWriter();
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
String cl = request.getParameter("class");
String phone1 = request.getParameter("phone1");
String phone2 = request.getParameter("phone2");
String phone3 = request.getParameter("phone3");
out.println("<html>");
out.println("<head><title>연락처</title></head>");
out.println("<body><h3>연락처</h3>");
out.println("id:"+id + "<br> password: "+ pw + "<br> 이름:" + name
+ "<br>회원구분:" + cl+"<br>");
out.println("전화번호:"+ phone1 +"-" +phone2+"-"+ phone3);
out.println("</body></html>");
}
}
예제3> GET 처리방식의 폼
Contact.html
<html>
<head>
<title>연락처</title>
</head>
<!-- 겟 처리 방식 -->
<body>
<h3>연락처</h3>
<form method=get action=/servlet_exam/Contact>
이름 <input type=text name="name"><br>
메일 <input type=text name="email"> <br>
<p>
<input type=submit value=전송>
<input type=reset value=취소>
</form>
</body>
</html>
Contact.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Contact extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
process(request, response);
}
public void process(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//한글 깨짐 방지
response.setContentType("text/html;charset=KSC5601");
//폼에서 넘어올 때 한글 깨짐 방지
request.setCharacterEncoding("KSC5601");
PrintWriter out = response.getWriter();
//각각의 파라미터를 요청받는다
String name = request.getParameter("name");
String email = request.getParameter("email");
//겟방식일 경우 한글 처리
if(request.getMethod().equalsIgnoreCase("get")){
name = util.StringUtil.toHangul(name);
email = util.StringUtil.toHangul(email);
}
out.println("<html>");
out.println("<head><title>연락처</title></head>");
out.println("<body><h3>연락처</h3>");
out.println("<a href=mailto:" +email+">"+name+"</a></body></html>");
}
}
'Study > JSP' 카테고리의 다른 글
[jsp] 회원가입, 로그인, 메인, 회원수정, 회원삭제, 자바빈 실습 (0) | 2019.05.20 |
---|---|
[jsp] 자바빈, JDBC, DBCP (0) | 2019.05.20 |
[jsp] request, response, <jsp:forward>, <jsp:param>, 쿠키 실습 (0) | 2019.05.17 |
[jsp] request, response, <jsp:forward>, <jsp:param>, 쿠키 (0) | 2019.05.16 |
[jsp] 기초 실습 (0) | 2019.05.16 |