html与java接口,JavaWeb学习——Servlet相关的接口和类

JavaWeb学习——Servlet相关的接口和类

摘要:本文主要学习了Servlet相关的接口和类。

Servlet的接口和类

三种方式

实现Servlet有三种方式:

实现javax.servlet.Servlet接口。

继承javax.servlet.GenericServlet类。

继承javax.servlet.http.HttpServlet类。

实现Servlet接口

Servlet接口是最基础的接口,如果要使用Servlet,就要实现这个接口,或者继承其他已经实现了这个接口的类。

创建一个类并实现Servlet接口:

1 public class TestServlet implements Servlet {

2 @Override

3 public ServletConfig getServletConfig() {

4 return null;

5 }

6

7 @Override

8 public String getServletInfo() {

9 return null;

10 }

11

12 @Override

13 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

14 System.out.println("service()方法被执行……");

15 }

16

17 @Override

18 public void init(ServletConfig config) throws ServletException {

19 System.out.println("init()方法被执行……");

20 }

21

22 @Override

23 public void destroy() {

24 System.out.println("destroy()方法被执行……");

25 }

26 }

继承GenericServlet类

GenericServlet类实现并重写了Servlet接口的一些方法,使得程序员在开发的时候只需要关注service()方法的实现就好。

创建一个类并继承GenericServlet类:

1 public class TestServlet extends GenericServlet {

2 @Override

3 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

4 System.out.println("service()方法被执行……");

5 }

6 }

继承HttpServlet类

HttpServlet类继承了GenericServlet类,是对HTTP请求的特殊支持,由于开发的项目一般遵循HTTP协议,所以经常使用的是HttpServlet类。

在HttpServlet的service(HttpServletRequest, HttpServletResponse)方法会去判断当前请求是GET还是POST,如果是GET请求,那么会去调用本类的doGet()方法,如果是POST请求会去调用doPost()方法,这说明在子类中去重写doGet()或doPost()方法即可。

创建一个类并继承HttpServlet类:

1 public class TestServlet extends HttpServlet {

2 @Override

3 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

4 super.doGet(req, resp);

5 }

6

7 @Override

8 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

9 super.doPost(req, resp);

10 }

11 }

其他的接口和类

ServletConfig接口

代表当前Servlet的配置信息,封装了ServletContext对象和配置参数信息。

可以通过Servlet里面的getServletConfig()方法获取:

1 public ServletConfig getServletConfig();

常用方法:

1 public String getServletName();// 获取当前Servlet的友好名称。

2 public ServletContext getServletContext();// 获取ServletContext对象。

3 public String getInitParameter(String name);// 获取初始化参数,初始化参数可以在web.xml配置文件的标签里的标签里设置。

4 public Enumeration getInitParameterNames();// 获取全部初始化参数,初始化参数同样需要在web.xml配置文件的标签里的标签里设置。

ServletContext接口

代表当前Web应用,服务器为每个Web应用程序都创建一个对应的ServletContext对象,被所有客户端共享。当Web应用启动时自动创建,当Web应用关闭和重新启动、服务器关闭时都会造成ServletContext销毁。

可以通过ServletConfig里面的getServletContext()方法获取:

1 public ServletContext getServletContext();

常用方法:

1 public String getServletContextName();// 获取当前项目的名称。

2 public String getServerInfo();// 返回Servlet容器名称和版本号。

3 public ServletContext getContext(String uripath);// 通过路径获取ServletContext对象。

4 public String getContextPath();// 获取服务器上当前项目的相对目录。比如:/HelloWorld。

5 public String getRealPath(String path);// 得到指定文件的真实路径,从应用程序根目录开始。比如:TestServlet得到的是盘符:\文件夹\工作空间\项目名称\WebContent\TestServlet。

6 public Set getResourcePaths(String path);// 得到指定相对路径下的文件夹名和文件名,从应用程序根目录开始,指定路径必须以/开头。比如:/得到的是应用程序根目录下的内容。

7 public URL getResource(String path) throws MalformedURLException;// 得到指定相对路径下的地址,从应用程序根目录开始。比如:/得到的是jndi:/域名/项目名/。

8 public InputStream getResourceAsStream(String path);// 将指定文件转化为流以便读取,从应用程序根目录开始。比如:index.html可以获取到应用程序根目录下的index.html并转为流。

9 public RequestDispatcher getRequestDispatcher(String path);// 创建跳转到指定路径的转发器,从应用程序根目录开始,指定路径必须以/开头。

10 public RequestDispatcher getNamedDispatcher(String name);// 创建跳转到指定Servlet名的转发器,不需要也不能以/开头。

11 public String getInitParameter(String name);// 获取指定的初始化参数,初始化参数需要在web.xml配置文件的标签里设置。

12 public Enumeration getInitParameterNames();// 获取所有指定的初始化参数,初始化参数也需要在web.xml配置文件的标签里设置。

13 public boolean setInitParameter(String name, String value);// 设置初始化参数,效果同在web.xml配置文件的标签里设置的一样。

14 public Object getAttribute(String name);// 通过属性名获取属性对象。

15 public Enumeration getAttributeNames();// 获取全部属性名。

16 public void setAttribute(String name, Object object);// 设置属性名和属性对象。

17 public void removeAttribute(String name);// 通过属性名删除属性对象。

RequestDispatcher接口

RequestDispatcher实例对象是由Servlet引擎创建的,用于包装一个要被其他资源调用的资源,并可以通过其中的方法将客户端的请求转发给所包装的资源。

RequestDispatcher接口中定义了两个方法:forward()方法和include()方法。forward()和include()方法接收的两个参数,必须是传递给当前Servlet的service()方法的ServletRequest和ServletResponse对象,或者是对它们进行了包装的ServletRequestWrapper和ServletResponseWrapper对象。

可以通过ServletContext对象的getRequestDispatcher()方法和getNamedDispatcher()方法获取:

1 public RequestDispatcher getRequestDispatcher(String path);

2 public RequestDispatcher getNamedDispatcher(String name);

请求转发:

1 // 该方法用于将请求从一个Servlet传递到服务器上另外的Servlet、Jsp页面或者Html文件,由当前的Servlet发送给另一个Servlet,该方法必须在响应被提交给客户端之前调用。

2 // 在当前的Servlet中可以给请求设置属性,设置的响应头信息不回被忽略,但是设置的响应体信息可能会被忽略。

3 public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException;

请求包含:

1 // 该方法用于在响应中包含Servlet、Jsp页面或者Html文件,由当前的Servlet发送给客户端,必须要在当前Servlet中设置编码格式。

2 // 当前Servlet和要包含的资源都可以设置响应体,按先后顺序输出到客户端。

3 public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException;

请求转发与请求包含比较:

请求转发大多是应用在Servlet中,转发目标大多是Jsp页面。

请求包含大多是应用在Jsp页面中,完成多页面的合并。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值