Курс Java-2016. Занятие 11. Servlets, JSP

30
Курс по Java, 2016 Servlet, JSP

Transcript of Курс Java-2016. Занятие 11. Servlets, JSP

Page 1: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Servlet, JSP

Page 2: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Servlet API

Page 3: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

javax.servlet.Servletimport javax.servlet.GenericServlet;

public class MyServlet extends GenericServlet { @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { // do something }}

Page 4: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

javax.servlet.ServletRequestString remoteAddress = servletRequest.getRemoteAddr();String contentType = servletRequest.getContentType();InputStream input = servletRequest.getInputStream();String parameter = servletRequest.getParameter("name");Object attribute = servletRequest.getAttribute("name");servletRequest.setAttribute("name", attribute);

Page 5: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

javax.servlet.ServletResponseservletResponse.setContentType("text/html");servletResponse.setContentLength(256);OutputStream output = servletResponse.getOutputStream();

Page 6: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

javax.servlet.http.HttpServletpublic class MyHttpServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // process GET request } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // process POST request } }

Page 7: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

javax.servlet.http.HttpServletRequestString remoteAddress = request.getRemoteAddr();String contentType = request.getContentType();Reader reader = request.getReader();String parameter = request.getParameter("name");Object attribute = request.getAttribute("name");request.setAttribute("name", attribute);Cookie[] cookies = request.getCookies();String proxiedClient = request.getHeader("X-Forwarded-For");HttpSession session = request.getSession();

Page 8: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

javax.servlet.http.HttpSessionHttpSession session = request.getSession();

Object sessionAttribute = session.getAttribute("name");session.setAttribute("name", sessionAttribute);

Page 9: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

javax.servlet.http.HttpServletResponseresponse.setContentType("text/html");response.setContentLength(256);Writer writer = response.getWriter();response.addCookie(new Cookie("name", "value"));response.addHeader("X-My-Header", "value");response.sendError(500, "Everything failed");response.sendRedirect("/other-path");

Page 10: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Servlet Container

Page 11: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Apache TomcatСамый популярный Servlet/JSP контейнерhttps://tomcat.apache.org/

Page 12: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

$CATALINA_HOME├── bin├── conf├── lib├── logs├── webapps│ ├── hello│ │ ├── index.jsp│ │ ├── META-INF│ │ └── WEB-INF│ │ ├── classes│ │ │ └── it│ │ │ └── sevenbits│ │ │ └── example│ │ │ └── hello│ │ │ └── HelloWorldServlet.class│ │ └── web.xml│ ├── hello.war│ └── ROOT└── work

Page 13: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

WARWeb Application aRchive

│ ├── hello.war│ │ ├── index.jsp│ │ ├── META-INF│ │ └── WEB-INF│ │ ├── classes│ │ │ └── it│ │ │ └── sevenbits│ │ │ └── example│ │ │ └── hello│ │ │ └── HelloWorldServlet.class│ │ └── web.xml

Page 14: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

War в Maven<project> <modelVersion>4.0.0</modelVersion> <groupId>it.sevenbits.example</groupId> <artifactId>hello</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>hello Maven Webapp</name> <url>http://maven.apache.org</url> <build> <finalName>hello</finalName> </build></project>

Page 15: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Webapp в Maven <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> </dependencies>

Page 16: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Webapp в Maven

Page 17: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

web.xml<web-app> <display-name>Sample Web Application</display-name> <servlet> <servlet-name>HelloWorldServlet</servlet-name> <servlet-class> it.sevenbits.example.hello.HelloWorldServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorldServlet</servlet-name> <url-pattern>/world</url-pattern> </servlet-mapping></web-app>

Page 18: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Сборка веб приложенияmvn package

cp target/hello.war $CATALINA_HOME/webapps

Page 19: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

HelloWorldServletpublic class HelloWorldServlet extends HttpServlet {

@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain"); PrintWriter out = response.getWriter(); out.println("Hello, world"); }

}

Page 20: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

JSPJava Server Pages

Servlet наоборот

Page 21: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

hello_world.jsp<!DOCTYPE html><html><head> <title>Hello</title></head><body> <h1>Hello, world!</h1></body></html>

Page 22: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Model — View — Controller

MVC

Page 23: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Model● Атрибуты запроса● Сессия

Page 24: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

ViewJSP

<!DOCTYPE html><html><head> <title>Hello <%=request.getAttribute("name")%></title></head><body> <h1>Hello, <%=request.getAttribute("name")%>!</h1></body></html>

Page 25: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

ControllerServlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // model manipulations String name = request.getParameter("name"); request.setAttribute("name", name); // forward to view RequestDispatcher dispatcher = request.getRequestDispatcher("hello_name.jsp"); dispatcher.forward(request, response); }

Page 26: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Forward RequestDispatcher.forward(request, response)

Page 27: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Redirect HttpServlerResponse.sendRedirect(“path”)

Page 28: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Page 29: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

J2EE

Page 30: Курс Java-2016. Занятие 11. Servlets, JSP

Курс по Java, 2016

Домашнее заданиеПоставить Tomcat.

Сделать простое веб приложение с отправкой формы.

Посмотреть, в какой java код превращаются JSP страницы.

[email protected] [email protected]