Servlet学习二

本文详细介绍了如何使用Java通过继承GenericServlet和HttpServlet开发Servlet,包括通用Servlet的简单实现方式和HTTP Servlet的具体应用。文章还对比了GET和POST提交数据的区别,并提供了相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2、通过继承GenericServlet开发Servlet
说明:通过继承GenericServlet开发Servlet,只需要重写service方法,相对实现Servlet接口开发servlet需要重写5个方法来说比较简单。

HelloGeneric 继承自GenericServlet,要开发这样的servlet需要重写service方法,位于classes文件夹下

package test;
import javax.servlet.GenericServlet;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.PrintWriter;
import java.io.IOException;
public class HelloGeneric extends GenericServlet{
 //重写service方法
 public void service(ServletRequest req,ServletResponse res){
  try{
   PrintWriter pw = res.getWriter();
   pw.println("hello,world!generic");
  }
  catch (IOException e){
   e.printStackTrace();
  }
 }
}

编译通过后生成test文件夹里面含有HelloGeneric.class文件

web.xml文件代码如下

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true"> 

  <servlet>
  <!--给你的Servlet取名字,此处的名字是任意的-->
    <servlet-name>hellogeneric</servlet-name>
  <!--指明Servlet的路径,(包名+类名)-->
    <servlet-class>test.HelloGeneric</servlet-class>
  </servlet>

  <!-- Define the Manager Servlet Mapping -->
  <servlet-mapping>
  <!--给你的Servlet取名字,此处的名字是任意的-->
    <servlet-name>hellogeneric</servlet-name>
  <!--在浏览器中输入访问Servlet的url,此处的名字是任意的-->
      <url-pattern>/hellogeneric</url-pattern>
  </servlet-mapping>
</web-app>

启动tomcat服务器,在浏览器地址栏中输入http://localhost:8989/myWebSite/hellogeneric

在浏览器中就会出现hello,world!generic

3.通过继承HttpServlet去开发servlet
需要重写doGet(),doPost()方法这是目前开发servlet用的最多的一种
表单提交数据有两种方式:get和post方式
两种数据提交方式的区别:
①、从安全性看get<post,get提交的数据会在浏览器的地址栏里显示
②、get提交的数据从提交的内容来看,get提交的数据不能大于2k,post不受限制
     但实际编程中建议不要大于64k
③、从响应速度来看:get>post,get要求服务器立即处理请求,而post请求可能形成
     一个队列请求

下面是一个例子web.xml代码如下,

需要说明的是多个不同的servlet在web.xml文件中做映射配置时servlet-name应该有所不同,以示区别否则会出现无法访问的错误

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">

  <servlet>
  <!--给你的Servlet取名字,此处的名字是任意的-->
    <servlet-name>hellogeneric</servlet-name>
  <!--指明Servlet的路径,(包名+类名)-->
    <servlet-class>test.HelloGeneric</servlet-class>
  </servlet>

  <!-- Define the Manager Servlet Mapping -->
  <servlet-mapping>
  <!--给你的Servlet取名字,此处的名字是任意的-->
    <servlet-name>hellogeneric</servlet-name>
  <!--在浏览器中输入访问Servlet的url,此处的名字是任意的-->
      <url-pattern>/hellogeneric</url-pattern>
  </servlet-mapping>

 

<servlet>
  <!--给你的Servlet取名字,此处的名字是任意的-->
    <servlet-name>hellohttp</servlet-name>
  <!--指明Servlet的路径,(包名+类名)-->
    <servlet-class>test.HelloHttp</servlet-class>
  </servlet>

  <!-- Define the Manager Servlet Mapping -->
  <servlet-mapping>
  <!--给你的Servlet取名字,此处的名字是任意的-->
    <servlet-name>hellohttp</servlet-name>
  <!--在浏览器中输入访问Servlet的url,此处的名字是任意的-->
      <url-pattern>/hellohttp</url-pattern>
  </servlet-mapping>
</web-app>

HelloHttp.java代码如下

package test;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.io.IOException;
public class HelloHttp extends HttpServlet{
 //处理get请求
 //req-->代表客户端请求信息
 //res-->代表服务器端向客户端返回的信息
 public void doGet(HttpServletRequest req,HttpServletResponse res){
  //业务逻辑
  try{
   PrintWriter pw = res.getWriter();
   pw.println("Hello,HttpServlet");
  }catch (IOException e){
   e.printStackTrace();
  }
 }
 //处理post请求
 //req-->代表客户端请求信息
 //res-->代表服务器端向客户端返回的信息
 public void doPost(HttpServletRequest req,HttpServletResponse res){
  doGet(req,res);
 }
}

编译后,启动tomca服务器在地址栏中输入http://localhost:8080/myWebSite/hellohttp

会显示Hello,HttpServlet



</web-app>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值