设为首页 加入收藏

TOP

JavaWeb学习篇之----Servlet(一)
2014-11-23 23:56:31 】 浏览:4496
Tags:JavaWeb 学习 ----Servlet

今天来继续学习JavaWeb的相关知识,之前都是都介绍一些基本知识,从今天开始我们来说一下如何在服务器编写程序,这里就需要来介绍一下Servlet的相关知识了。Servlet就是一个能够运行在服务器端的java代码,我们从他的api开始来解读吧!

Servlet是JavaEE的13门技术中的一门,所以我们需要从JavaEE的api中寻找,下面就是Servlet的api:

\

其实Servlet是一个接口,他有两个实现类:GenericServlet,HttpServlet,我们可以看到Servlet接口中的五个方法:

init(ServletConfig config):是个初始化方法,这个方法是在Servlet被初始化的时候被调用,而且会有一个ServletConfig对象传递进来,至于ServletConfig对象我们后面会继续说的

getServletInfo():方法是获取这个Servlet的相关信息的。此方法用到的地方很少

getServletConfig():方法是获取一个ServletConfig对象,和init方法中传递进来的ServletConfig是同一对象

service(ServletRequest req,ServletResponse res):方法是用户处理客户机的请求的,这个方法的两个参数对应的是请求参数:req;和响应参数res。

destroy():是在servlet被销毁的时候调用。


从上面的方法中我们可以看到有三个方法是和servlet的生命周期相关的方法:init(...),service(..),destroy();

下面就来说一下servlet的生命周期的吧:

当服务器启动的时候,服务器会加载所有的web应用,当用户在浏览器中第一次请求servlet的时候,init方法就会被调用,这时候servlet就会被创建,因为servlet是用的单例模式。所以只要servlet所在的应用没有关闭或者服务器没有关闭,这个servlet始终都是在服务器的内存中的,所以当你在一次请求这个servlet的时候init方法是不会再调用的。

当用户每次请求servlet的时候,这个servlet中的service的方法都会被调用,因为他是用来处理客户机的请求的。

当该web应用被关闭或者服务器关闭了,这个servlet才会被销毁,此时destroy方法会被调用。同时这个单例的servlet也会从内存中消失。


上面介绍了servlet的接口和servlet的相关信息,下面就来看一下他的子类吧:

GenericServlet:

\

他是实现Servlet接口中的所有方法,同时自己也是添加了几个方法:

getInitParameter(String name):这个方法是和ServletConfig对象相关的,通过name来从ServletConfig对象中获取值value

getInitParameterNames():这个方法也是和ServletConfig对象相关的,是获取ServletConfig对象中所有的name的枚举集合

getServletContext():这个方法很重要的,是获取ServletContext对象,这个ServletContext对象我们会在后面说到


下面就来手动的书写一个Servlet,这样我们就能够深入的了解到Servlet的运行原理:

第一步:在tomcat中的webapp目录中新建一个web应用:FirstServlet,然后在应用中新建一个WEB-INF文件夹,在WEB-INF文件夹下面新建一个classes文件夹,之前说过,服务器端的程序代码文件就是放在这个文件夹下面的,然后我们就在classes文件夹下面新建一个FirstServlet.java文件:代码如下:

package com.weijia.firstservlet;

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

public class FirstServlet extends GenericServlet
{
	@Override
	public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException
	{
		res.getOutputStream().write("hello servlet".getBytes());
	}
}

然后我们进行编译:首先进入到当前目录:输入命令: javac -d . FirstServlet.java

注意:-d参数是编译包名;.点号是指编译后的包名文件存在当前目录

编译发生错误,提示找不到javax.servlet.*这样的包,其实很简单,因为我们使用javac命令编译程序的话只导入了JavaSE的jar包,所以我们需要导入JavaEE的jar包到路径:set classpath=%classpath%;C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar

因为tomcat目录中肯定用到了javaee中的jar包,所以将这个jar包添加到classpath中即可。

这时候在执行javac命令编译没有问题了,在当前目录中产生文件了,就是包名对应的文件目录

程序编译好了,下面还需要进行配置这个Servlet的对外访问路径,这个我们之前也说过了,关于web应用的所有配置都是在web.xml文件中配置的,所以我们需要在应用FirstServlet应用文件夹中新建一个web.xml文件,这里面来配置Servlet,但是我们该如何书写呢?

这时候我们再去tomcat目录中找到web.xml文件,从这个文件中抄过来,配置如下:

  


  


    
    
     FirstServlet
     
    
     com.weijia.firstservlet.FirstServlet
     
   


    
    
     FirstServlet
     
    
     /FirstServlet
     
   


  

这样我们就配置好了FirstServlet对外访问路径了,下面我们就来在启动服务器测试一下吧:

浏览器中输入:http://localhost:8080/FirstServlet/FirstServlet

效果如下:

\

这样我们就手动的编写一个Servlet,而且可以看到我们是继承GenericServlet的。并且将逻辑都写在了service方法中,其实GenericServlet是一个抽象类,service也是一个抽象的方法需要子类实现的。


那下面就来看看HttpServlet,其实HttpServlet是实现了GenericServlet类的。

\


上面就是HttpServlet的api了,实现了GenericServlet中的抽象方法,一起我们注意的是:他有好多doXXX这样的方法,其实这个和我们之前介绍Http协议的时候相联系的,HttpServlet就是针对于Http协议的Servlet,我们在之前介绍Http协议的时候说过他的请求方式其实是有七种方式的,只是get

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java中的equals和hashCode方法详解 下一篇J2SE知识点归纳笔记(三)---Java面..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目