Java Servlet基础

本文介绍了Servlet的部署、创建与运行步骤,包括在JSP中使用Servlet的配置和调用方法。详细阐述了Servlet的工作原理,如HTTP请求的处理和doGet/doPost方法。此外,还讨论了通过JSP访问Servlet、共享变量(如使用session)以及重定向和转发的概念。
摘要由CSDN通过智能技术生成

文章目录

6.1servlet的部署、创建与运行

6.2servlet的工作原理

6.3通过jsp页面访问servlet

6.4共享变量

6.5doGet和doPost方法

6.6重定向与转发

6.7使用session


6.1 servlet的部署、创建与运行 在JSP中创建和运行Servlet是非常简单的。Servlet需要在Web服务器上运行,因此首先需要一个Web服务器。一些流行的Web服务器包括Apache Tomcat,JBoss和Jetty。在安装并启动Web服务器之后,可以按照以下步骤创建和部署Servlet:

1.编写Servlet代码,可以使用Java编写Servlet,该Servlet应该扩展HttpServlet类,并重写其中一个或两个方法(doGet或doPost)。

2.将Servlet代码编译为.class文件。

3.将.class文件复制到Web服务器上的特定目录,这通常在Web服务器安装目录下的webapps /目录中。

4.在Web服务器配置文件中添加Servlet的映射,指定Servlet的URL模式和Servlet类的名称。 5.重新启动Web服务器以加载新的Servlet。

在 JSP 中使用 Servlet,需要进行如下步骤: 1. 部署 Servlet 在 Web 项目的 WEB-INF 目录下创建 web.xml 文件,配置 Servlet:

<servlet>
   <servlet-name>MyServlet</servlet-name>
   <servlet-class>com.example.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
   <servlet-name>MyServlet</servlet-name>
   <url-pattern>/myservlet</url-pattern>
</servlet-mapping>

这里创建了一个名为 MyServlet 的 Servlet,映射到 /myservlet 路径。 2. 创建 Servlet 在 Java 项目中,需要创建一个继承 HttpServlet 类的 Servlet 类,实现 doGet() 或 doPost() 方法:

public class MyServlet extends HttpServlet {
   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      out.println("<html><body>");
      out.println("<h1>Hello, World!</h1>");
      out.println("</body></html>");
   }
}

这里的 Servlet 类名为 MyServlet, doGet() 方法输出一个简单的 HTML 页面。 3. 运行 Servlet 在 JSP 中通过如下方式调用 Servlet:

<form action="myservlet" method="get">
   <input type="submit" value="Click Me!">
</form>

在点击按钮后,JSP 会通过 /myservlet 路径访问 MyServlet Servlet,并触发其 doGet() 方法。最终将在浏览器中显示 Hello, World!。

6.2 servlet的工作原理 Servlet被设计为Web服务器上的Java组件,可以处理HTTP请求和响应。Servlet在Web服务器上创建并管理一个实例,可以处理多个HTTP请求。每个HTTP请求都由Web服务器发送到Servlet,并且Servlet可以生成HTTP响应。Servlet在Web服务器生命周期中一直处于活动状态。 当一个HTTP请求被发送到Web服务器时,Web服务器根据请求URL来确定哪个Servlet应该处理该请求。然后Web服务器将HttpServletRequest和HttpServletResponse对象传递给Servlet,并调用doGet或doPost方法,其中一个或两个方法必须被Servlet重写。 Servlet生成HTTP响应,并将其发送回Web服务器,Web服务器将HTTP响应发送回客户端浏览器。

以下是一个简单的例子: index.jsp:

<html>
   <head>
      <title>Hello World!</title>
   </head>
   <body>
      <form method="POST" action="HelloServlet">
         Name: <input type="text" name="name" /><br/><br/>
         <input type="submit" value="Submit" />
      </form>
   </body>
</html> 

HelloServlet.java:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
            
        String name = request.getParameter("name");
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello, " + name + "!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello, " + name + "!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

当用户在 index.jsp 中输入姓名并提交表单时,会向 HelloServlet 发送一个 POST 请求。 HelloServlet 会从请求中获取姓名参数,并输出一个包含该姓名的 HTML 页面。这个页面将作为响应发送回给浏览器,并在浏览器中显示。 通过这个例子,我们可以更好地理解 JSP 和 Servlet 之间的交互关系。

6.3 通过jsp页面访问servlet 要从JSP页面访问Servlet,需要使用JSP表单和JSP页面中的HTML表单控件,例如提交按钮或文本框等。在JSP页面上定义表单时,需要将“action”属性设置为Servlet的URL。当用户单击提交按钮时,将向Servlet发送HTTP请求,并将表单数据作为HTTP请求参数发送给Servlet。Servlet可以读取这些参数,并在HTTP响应中向客户端浏览器发送结果。

6.4 共享变量 JSP页面和Servlet可以共享变量,以便在应用程序中传递数据。要共享变量,可以使用ServletContext对象、HttpSession对象或HttpServletRequest对象。ServletContext对象用于共享全局应用程序数据,HttpSession对象用于共享会话数据,HttpServletRequest对象用于共享请求数据。

6.5 doGet和doPost方法 doGet和doPost方法是Servlet中最常用的方法。这两个方法用于处理HTTP GET请求和POST请求。 doGet方法通常用于读取数据(例如Web页面),而doPost方法通常用于更新数据(例如Web表单)。在doGet方法中,Servlet从HttpServletRequest中读取请求参数,然后将响应发送回客户端浏览器。在doPost方法中,Servlet从HttpServletRequest中读取POST请求的表单数据,然后将响应发送回客户端浏览器。

6.6 重定向与转发 重定向和转发是在Web服务器和客户端之间传递控制的常用机制。重定向是指当Web服务器接收到一个HTTP请求时,Web服务器将请求重定向到另一个URL。转发是指Web服务器将HTTP请求从一个Servlet发送到另一个Servlet。在Servlet中,可以使用response.sendRedirect方法来重定向HTTP请求,也可以使用request.getRequestDispatcher方法来转发HTTP请求。

6.7 使用session并用代码举例 HttpSession是Servlet API中的一个关键对象,它用于在不同的HTTP请求之间保持会话状态。例如,在Web应用程序中,当用户在不同的页面之间导航时,可能需要在各个页面之间共享数据。为了解决这个问题,可以使用HttpSession对象将数据存储在Web服务器上,并在HTTP请求之间保持持久性。 以下是使用session的示例代码:

// 在Servlet中获取HttpSession对象
HttpSession session = request.getSession();

// 向session中存储数据
session.setAttribute("username", "john");

// 从session中读取数据
String username = (String) session.getAttribute("username");

在上面的示例中,创建了一个HttpSession对象,并将“username”属性设置为“john”。在下一个HTTP请求中,可以使用相同的HttpSession对象访问“username”属性,并获取其值。这使得在Web应用程序的不同部分之间传递数据非常容易。


总结


Java Servlet的核心是在服务器端创建响应用户请求的对象,即创建servlet对象。servlet 对象第一次被请求加载时,服务器创建一个servlet 对象,这个对象调用init方
法完成必要的初始化工作。init方法只被servlet 对象调用一次,当后续的客户请求该servlet对象服务时,服务器将启动一个新的线程,在该线程中,servlet对象调用service 方法响应客户的请求。每个客户的每次请求都导致service方法被调用执行,调用过程运行在不同的线程中,互不干扰。

Servlet类继承的service方法检查HTTP的请求类型(get、post等),并在service方法
中根据用户的请求方式,对应地调用doGet或doPost方法。因此,Servlet 类不必重写service方法,直接继承该方法即可。可以在Servlet类中重写doPost或doGet方法来响应用户的请求。
RequestDispatcher对象可以把用户对当前JSP页面或servlet的请求转发给另一个JSP页面或servlet,而且将用户对当前JSP页面或servlet 的请求和响应传递给转发到的JSP页面或servlet。也就是说,当前页面所要转发到的目标页面或servlet对象可以使用request获取用户提交的数据。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值