多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # Servlet ## 什么是 Servlet 在 Web 容器中有浏览器访问地址的特殊 Java 类。 在开发中,Servlet 一般充当的就是控制器的角色。 ## 如何创建 Servlet 创建带注解的 Servlet *第一个 Servlet* ~~~ package com.ntqn.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class IndexServlet */ @WebServlet("/IndexServlet.php") public class IndexServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * Default constructor. */ public IndexServlet() { // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("<h1>Hello,Sevlet</h1>"); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } } ~~~ > 1、需要继承 HttpServlet; > 2、相关 Servlet 的类文件不是存在于 JDK 的标准开发包中的,而是存在于 Tomcat 的 lib 中servlet-api.jar 中 > 3、在 Servlet 中存在 doPost 和 doGet 方法,我们一般会任一方法中调用另外一个方法,因为doPost 和 doGet 的客户端请求不一样,但是一般业务处理逻辑都是一样的; > 4、在类的注解中 @WebServlet("/IndexServlet2.php"),表示执行该 Servlet 的请求路径; > 5、Servlet 可以在 Eclipse 中进行引导式的创建,但是其本质还是一个普通的 class 文件,并无特殊之处,只不过是需要 web 容易的支持才能运行的。 ## Servlet的页面跳转 **进行服务器的跳转 - 转发** `request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);` 在实际开发中,我们会把 jsp 页面放到 WEB-INF 中,在 WEB-INF 中的资源属于服务端的资源,是不能被外部链接直接访问的。 在 WebContent 的直接目录下,我们一般放置静态资源,比如图片、CSS、Javascript 等。但是也有特殊的情况,有的应用做的比较好,会被上述的静态资源也通过 Servlet 进行转化后访问。 **进行客户端的跳转 - 重定向** `response.sendRedirect("pages/index3.jsp");` 在客户端跳转中是**不可以**使用` request.setAttribute()` 进行赋值后在跳转到的 jsp 通过 **request.getAttribute()** 获取值的,一定要理解什么是服务器端跳转,什么是客户端跳转,和值应该用什么方式传递。 > **整个 Web 应用程序的开发可以理解为就是一个传值的游戏。**