javaee2020-教程直播-05Servlet入门实例

心中的helloservlet

使用notepad++编写一个HelloServlet.java文件,内容如下

package cn.edu.cuit.servlet;

// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// 扩展 HttpServlet 类
public class HelloServlet extends HttpServlet {

	private String message; // 属性

	// 初始化方法
	public void init() throws ServletException {
		// 执行必需的初始化
		message = "Hello Servlet,we study CUIT JAVAEE";
	}

	// 处理get类请求
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 设置响应内容类型
		response.setContentType("text/html");

		// 实际的逻辑是在这里
		PrintWriter out = response.getWriter();
		out.println("<h1><font size=12 color='red'>" + message + "</font></h1>");
	}

	// 销毁方法
	public void destroy() {
		// 什么也不做
	}
}

java类的编译

把上面的代码写在 HelloServlet.java 文件中,把这个文件放在…/src/cn/edu/cuit/servlet/HelloServlet.java,还需要把这些目录添加到 CLASSPATH 中。
假设您的环境已经正确地设置,进入 servlet目录,并编译 HelloServlet.java,如下所示:

$ javac HelloServlet.java

当然,平时的开发这样做,就太没有效率了,一般用eclipse来创建项目,在项目中来实现servlet的开发。

服务的部署

编写配置描述符,即web.xml文件,然后部署到tomcat服务器上

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>j2018001001-01-servletdemo-helloservlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>HelloServlet</servlet-name>
  	<servlet-class>cn.edu.cuit.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>HelloServlet</servlet-name>
  	<url-pattern>/helloservlet</url-pattern>
  </servlet-mapping>
</web-app>

调用和运行

假设项目名是:j2018001001-01-servletdemo-helloservlet
启动 tomcat 服务器,最后在浏览器的地址栏中输入

http://localhost:8080/j2018001001-01-servletdemo-helloservlet/helloservlet

如果一切顺利,您会看到下面的结果:
在这里插入图片描述

编写MyServlet

创建一个Servlet创建servlet有三种不同的方法。

  • 实现Servlet接口
  • 扩展GenericServlet类
  • 扩展HttpServlet类
    – 但是大部分servlet是通过扩展HttpServlet抽象类创建的。
    – 如前所述HttpServlet给出了Servlet接口的service()方法的定义。
    – 我们将创建Servlet类但不需要覆盖service()方法。Servlet类将仅覆盖doGet()或doPost()方法。
    当servlet的请求进入时,Web容器首先将调用servlet的service()方法,并根据service()方法的请求类型来调用doGet()或doPost()方法。

注意:默认情况下,请求是Get请求。

在cn.edu.cuit.servlet包中,直接创建MyServlet类

package cn.edu.cuit.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 直接用扩展HttpServlet类的方式创建MyServlet类<br>
 * <li> 注解方式:@WebServlet("/myservlet")
 * <li> 配置描述符方式:在web.xml文件中配置相应的节点信息,url是:<url-pattern>/hello</url-pattern>
 * 示例类<br>
 * 访问方法<br>
 * <li>地址1   http://localhost..../myservlet
 * <li>地址2   http://localhost..../hello
 * 
 */
@WebServlet("/myservlet")
public class MyServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * 构造方法
     */
    public MyServlet() {
        super();
    }

	/**
	 * doGet方法,处理一切请求
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("<html><body>");
		out.println("<h2 style='text-align:center'>Hello MyServlet ~</h2>");
		out.println("</body></html>");
	}

	/**
	 * doPost方法,转交给doGet方法去处理
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

在web.xml添加相应的配置描述符

  <!--添加MyServlet的配置描述 -->
  <servlet>
    <description></description>
    <display-name>MyServlet</display-name>			<!--// 类的显示名称 -->
    <servlet-name>MyServlet</servlet-name>			<!--// 类的别名 -->
    <servlet-class>cn.edu.cuit.servlet.MyServlet</servlet-class>		<!--// 类的名称 -->
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>			<!--// 类的别名 -->
    <url-pattern>/hello</url-pattern>				<!--// 请求此类的对应URL -->
  </servlet-mapping>

web.xml文件元素的说明

web.xml文件中的元素太多。以下是上述web.xml文件中使用的一些元素的说明
表示整个应用程序。
是的子元素,代表servlet。
是的子元素,表示servlet的名称。
是的子元素,表示servlet的类。
是的子元素。它用于映射servlet。
是的子元素。客户端使用此模式来调用servlet。

部署和查看运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值