为幸福写歌

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

因项目需要,今天开始学习Servlet。


Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。


下面开始讲述了开发servlet的流程,因为利用eclipse开发servlet非常容易但它隐藏了很多细节,所以这里先使用JCreator来开发。


开发流程:
第一步:创建一些必须的文件夹和文件
在%TOMCAT_HOME%\webapps下新建一个myWebSite文件夹用来存放我们的工程文件,在此文件夹中新建WEB-INF文件夹,并在WEB-INF文件夹下新建classes和lib子文件夹(classes用来存放Java的类文件,lib用来存放相关的库文件),并新建一个命名为web.xml的文件(web.xm;是部署文件)。

第二步:开发servlet(引入servlet-api.jar)

在JCreator中新建一个Java类输入下面代码并编译

/**
 * @(#)Hello.java
 *
 *实现servlet的第一种方式(使用实现servlet接口的方式)
 * @author 
 * @version 1.00 2017/2/22
 */
package com.chongqing;

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

public class Hello implements Servlet{

	//该函数用于初始化该servlet(类似于类的构造函数)
	//该函数只会被调用一次(当用户第一次访问该servlet是被调用)
	public void init(ServletConfig parm1) throws ServletException{
		System.out.println ("init it");		
		}
		
	public ServletConfig getServletConfig(){
		return null;
		}
		
	//这个函数用于处理业务逻辑,程序员应当把业务逻辑代码写在这里
	//当用户没访问servlet时都会调用
	//req:用于获得客户端(浏览器)时的信息
	//res:用于向客户端(浏览器)返回信息
	public void service(ServletRequest req,ServletResponse res ) throws ServletException{
	
		System.out.println ("service it");	
		
		try {
			
			//从res中得到PrintWriter
			PrintWriter pw = res.getWriter();
			pw.println("Hello World!");
			
		}catch (Exception ex) {
			ex.printStackTrace();
		}
		
		}
		
	public String getServletInfo(){
		
		return "";
		}
		
	//销毁servlet实例(释放内存)
	//1.reload该serlvet(webapp)2.关闭Tomcat  3.关机	
	public void destroy(){
		System.out.println ("destroy!");
		}
}


第三步:部署servlet

在web.xml文件中输入下面代码

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


<web-app >

    <description>
      Servlet and JSP Examples.
    </description>
    <display-name>Servlet and JSP Examples</display-name>



    <!-- JSPC servlet mapping start -->

    <servlet>
    	<!--给你的servlrt取名,任意的-->
      <servlet-name>hello</servlet-name>
      <!--指明servlet的路径,(包名+类名)-->
      <servlet-class>com.chongqing.Hello</servlet-class>
    </servlet>
    
    <servlet-mapping>
    		<!--给你的servlrt取名,任意的-->
        <servlet-name>hello</servlet-name>
        <!--这是在浏览器中输入的访问该servlet的url-->
        <url-pattern>/zero</url-pattern>
    </servlet-mapping>
    
   
   <!--JSPC servlet mappings end -->

</web-app>
第四步:启动Tomcat访问servlet,用浏览器输入网址http://127.0.0.1:8080/myWebSite/zero即可看到显示的内容



可以看出init方法只在被创建的时候调用了一次,service方法则被调用了多次。


下面是实现servlet的另外两种方式

/**
 * @(#)HelloGen.java
 *
 *开发servlet的第二种方法(继承GenericServlet的方式)
 * @author 
 * @version 1.00 2017/2/22
 */
package com.chongqing;

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

public class HelloGen extends GenericServlet {
    
    //重写service方法即可
    public void service(ServletRequest req,ServletResponse res){
		
    		//返回HelloWorld!generic
    		try {
					PrintWriter pw = res.getWriter();
					pw.println("HelloWorld!generic");
			}
			catch (Exception ex) {
				ex.printStackTrace();
			}
    	}
}


/**
 * @(#)HelloGen.java
 *
 *开发servlet的第三种方法(继承HttpServlet的方式)
 * @author 
 * @version 1.00 2017/2/22
 */
package com.chongqing;

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

public class HelloHttp extends HttpServlet {
    
    //处理get请求
    public void doGet(HttpServletRequest req,HttpServletResponse res){
		
    		//
    		try {
					PrintWriter pw = res.getWriter();
					pw.println("HelloWorld!Http");
			}
			catch (Exception ex) {
				ex.printStackTrace();
			}
    	}
    	
    public void doPost(HttpServletRequest req,HttpServletResponse res){
    	
    	this.doGet(req,res);
    }
}

在web.xml添加新的Servlet部署就可以了

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


<web-app >

    <description>
      Servlet and JSP Examples.
    </description>
    <display-name>Servlet and JSP Examples</display-name>



    <!-- 第一个Servlet -->

    <servlet>
    	<!--给你的servlrt取名,任意的-->
      <servlet-name>hello</servlet-name>
      <!--指明servlet的路径,(包名+类名)-->
      <servlet-class>com.chongqing.Hello</servlet-class>
    </servlet>
    
    <servlet-mapping>
    		<!--给你的servlrt取名,任意的-->
        <servlet-name>hello</servlet-name>
        <!--这是在浏览器中输入的访问该servlet的url-->
        <url-pattern>/zero</url-pattern>
    </servlet-mapping>
	
	    <!-- 第二个Servlet -->
		
	<servlet>
    	<!--给你的servlrt取名,任意的-->
      <servlet-name>hellogen</servlet-name>
      <!--指明servlet的路径,(包名+类名)-->
      <servlet-class>com.chongqing.HelloGen</servlet-class>
    </servlet>
    
    <servlet-mapping>
    		<!--给你的servlrt取名,任意的-->
        <servlet-name>hellogen</servlet-name>
        <!--这是在浏览器中输入的访问该servlet的url-->
        <url-pattern>/hellogen</url-pattern>
    </servlet-mapping>

	    <!-- 第三个Servlet -->
		
	<servlet>
    	<!--给你的servlrt取名,任意的-->
      <servlet-name>hellohttp</servlet-name>
      <!--指明servlet的路径,(包名+类名)-->
      <servlet-class>com.chongqing.HelloHttp</servlet-class>
    </servlet>
    
    <servlet-mapping>
    		<!--给你的servlrt取名,任意的-->
        <servlet-name>hellohttp</servlet-name>
        <!--这是在浏览器中输入的访问该servlet的url-->
        <url-pattern>/hellohttp</url-pattern>
    </servlet-mapping>

    
   
   <!--JSPC servlet mappings end -->

</web-app>



posted on 2017-02-22 17:49  为幸福写歌  阅读(193)  评论(0编辑  收藏  举报