서버 단에서 클라이언트의 요청을 받아 처리한 후 응답하는 역할.
//HelloServlet.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>HelloServlet</title>
</head>
<body>
<h2>web.xml에서 매핑 후 JSP에서 출력하기</h2>
<p>
<strong><%=request.getAttribute("msg")%></strong>
<br/>
<a href="./HelloServlet.do">바로가기</a>
</p>
</body>
</html>
//HelloServlet.java
package com.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("msg", "Hello Servlet...");
req.getRequestDispatcher("/13/HelloServlet.jsp").forward(req, resp);
}
}


//AnnoMapping.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Annotation Mapping</title>
</head>
<body>
<h2>Annotation으로 매핑하기</h2>
<p>
<strong>${msg}</strong>
<br/>
<a href="<%=request.getContextPath()%>/13/AnnoMapping.do">바로가기</a>
</p>
</body>
</html>
//AnnoMapping.java
package com.servlet;
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 java.io.IOException;
@WebServlet("/13/AnnoMapping.do")
public class AnnoMapping extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("msg", "@Webservlet으로 매핑");
req.getRequestDispatcher("/13/AnnoMapping.jsp").forward(req, resp);
}
}


//DirectServletPrint.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>DirectServletPrint.jsp</title>
</head>
<body>
<h2>어노테이션으로 매핑 후 Servlet에서 직접 출력하기</h2>
<form method="post" action="../13/DirectServletPrint.do">
<input type="submit" value="바로가기"/>
</form>
</body>
</html>
DirectServletPrint.java
package com.servlet;
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 java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/13/DirectServletPrint.do")
public class DirectServletPrint extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html; charset=UTF-8");
PrintWriter writer = resp.getWriter();
writer.println("<html>");
writer.println("<head><title>DirectServletPrint</title></head>");
writer.println("<body>");
writer.println("<h2>서블릿에서 직접 출력합니다.</h2>");
writer.println("<p>jsp로 포워드하지 않습니다.</p>");
writer.println("<body>");
writer.println("<html>");
writer.close();
}
}


//FrontController.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>FrontController.jsp</title>
</head>
<body>
<h2>한 번의 매핑으로 여러 가지 요청 처리하기</h2>
${resultValue}
<ol>
<li>URI : ${ uri }</li>
<li>요청명 : ${ commandStr }</li>
</ol>
<ul>
<li><a href="../13/regist.one">회원가입</a></li>
<li><a href="../13/login.one">로그인</a></li>
<li><a href="../13/freeboard.one">게시판</a></li>
</ul>
</body>
</html>
//FrontController.java
package com.servlet;
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 java.io.IOException;
@WebServlet("*.one")
public class FrontController extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException{
String uri = req.getRequestURI();
int lastSlash = uri.lastIndexOf("/");
String commandStr = uri.substring(lastSlash);
if(commandStr.equals("/regist.one")){
registFunc(req);
}else if(commandStr.equals("/login.one")){
loginFunc(req);
}else if(commandStr.equals("/freeboard.one")){
freeboardFunc(req);
}
req.setAttribute("uri", uri);
req.setAttribute("commandStr", commandStr);
req.getRequestDispatcher("/13/FrontController.jsp").forward(req, resp);
}
//페이지별 처리 메서드
void registFunc(HttpServletRequest req){
req.setAttribute("resultValue", "<h4>회원가입</h4>");
}
void loginFunc(HttpServletRequest req){
req.setAttribute("resultValue", "<h4>로그인</h4>");
}
void freeboardFunc(HttpServletRequest req){
req.setAttribute("resultValue", "<h4>자유게시판</h4>");
}
}


로그인과 게시판도 나오지만 생략.