实现servlet的3种方法

理解Servlet的三种实现方式
本文详细介绍了Servlet的实现方式,包括实现接口、继承GenericServlet类和HttpServlet类,并展示了如何在web.xml文件中进行配置。
Servlet有三种实现方式:
1.实现Servlet接口
2.继承GenericServlet类
3.继承HttpServlet类

[b]实现servlet接口代码[/b]

package com.yuchao.servlet;

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

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class HelloWorldServlet implements Servlet{

//释放内存
//1. reload
//2. 关闭TomCat
//3. 关机
public void destroy() {
// TODO Auto-generated method stub
System.out.println("destroy it");
}

public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}

public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}

//该 函数用于初始化,只会被调用一次(当用户第一次访问Servlet时,被调用)
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
System.out.println("init it");

}

//用于处理业务逻辑,应该把业务逻辑代码写在该方法中
//会被多次调用,当用户每访问一次时就会被调用一次
//request用于获取客户端的信息
//response用户向客户端返回信息
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("service it");
PrintWriter printWriter=response.getWriter();
printWriter.println("<h1>"+"hello,world"+"</h1>");
}

}



[b]继承genericservlet类代码[/b]

package com.yuchao.servlet;

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

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

@SuppressWarnings("serial")
public class HelloWorldGenericServlet extends GenericServlet {

@Override
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
try{
PrintWriter printWriter=response.getWriter();
printWriter.println("<h1>hello,generic world.!!!</h1>");
}catch(Exception e){
e.printStackTrace();
}
}

}



[b]继承httpservlet类代码[/b]


package com.yuchao.servlet;

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

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

@SuppressWarnings("serial")
public class HelloWorldHttpServlet extends HttpServlet {

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req,resp);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter printWriter=resp.getWriter();
printWriter.println("<h1>Hello World!</h1>");
}

}



使用Servlet需要对其在web.xml中进行配置,例如:
[b]配置信息代码[/b]


<!-- HelloWorldServlet映射 -->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.yuchao.servlet.HelloWorldServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>

开发Servlet有三种常见方法,以下是具体实现方式: ### 实现Servlet接口 通过实现 `Servlet` 接口来开发Servlet,需要实现接口中的所有方法,特别是 `service` 方法用于处理请求和响应。示例代码如下: ```java //HelloServlet.java package servlet; import javax.servlet.*; import java.io.IOException; public class HelloServlet implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } // service方法专门来处理请求和响应 @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("Hello,Servlet! 被访问了"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { } } ``` 上述代码定义了一个名为 `HelloServlet` 的类,实现了 `Servlet` 接口,并重写了接口中的方法,在 `service` 方法中输出了一条信息 [^3]。 ### 继承GenericServlet类 `GenericServlet` 类是一个抽象类,实现了 `Servlet` 接口。继承该类时,只需要重写 `service` 方法即可。示例代码如下: ```java import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import java.io.IOException; public class StudentInfoServlet extends GenericServlet { @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { // 处理请求和响应的逻辑 } } ``` 上述代码定义了一个名为 `StudentInfoServlet` 的类,继承自 `GenericServlet` 类,并重写了 `service` 方法 [^4]。 ### 继承HttpServlet类 `HttpServlet` 类是 `GenericServlet` 的子类,专门用于处理HTTP请求。继承该类时,通常需要重写 `doGet` 或 `doPost` 方法来处理不同类型的HTTP请求。示例代码如下: ```java import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class UserLoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 处理GET请求的逻辑 } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 处理POST请求的逻辑 } } ``` 上述代码定义了一个名为 `UserLoginServlet` 的类,继承自 `HttpServlet` 类,并重写了 `doGet` 和 `doPost` 方法,分别用于处理GET和POST请求 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值