Hello Servlet

上周老师开始讲了servlet进行开发,前面是jsp+前端+javaBean模式。现在又多了个servlet技术,jsp是在servlet基础上发展出来的技术。


 servlet生命周期,很多博客都写的很好,http://www.cnblogs.com/cuiliang/archive/2011/10/21/2220671.html   

1.实例化(构造函数)

2.初始化

3.服务

4.销毁。

开发servlet有三种方法:

A.实现servlet接口

B.继承GenericServlet

C.继承HttpServlet

servlet3.0之后还可以通过注解开发servlet(JAVAEE 6.0)

  我学习的第一个servlet。

一:首先采用实现servlet接口方式:

Hell.java:

//这是我的第一个servlet,实现servletjiekou
package com.ncu;
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 Hello implements Servlet{

	/* (non-Javadoc)
	 * @see javax.servlet.Servlet#destroy()
	 */
	@Override
	public void destroy() {
//销毁servlet,释放内存
		System.out.println("destroy");
//1.reload 该servlet(webApps)
		//2.关闭tomcat
	}

	/* (non-Javadoc)
	 * @see javax.servlet.Servlet#getServletConfig()
	 */
	@Override
	public ServletConfig getServletConfig() {
		// 
		return null;
	}

	/* (non-Javadoc)
	 * @see javax.servlet.Servlet#getServletInfo()
	 */
	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	/* (non-Javadoc)
	 * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
	 */
	@Override
	public void init(ServletConfig config) throws ServletException {
//该函数用于初始化servlet,类似于类的构造函数,该函数只会被调用一次
		//该函数只会被调用一次,(当用户第一次访问该servlet时被调用)
		 System.out.print("initialize it!!!");
	}

	/* (non-Javadoc)
	 * @see javax.servlet.Servlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
	 */
	@Override
	//req:用于获得客户端(浏览器)信息
	//res:用于向客户端返回信息
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		// 该函数用于处理业务逻辑
		//程序员应当把业务逻辑代码写在这里
		//从res中得到printwriter
		System.out.println("service it");
		PrintWriter pw=res.getWriter();
		pw.println("hello world");
		
		
	}
	
}

2.配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	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">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  <!-- 给你的servlet取名,任意的 -->
  <servlet-name>hello</servlet-name>
  <!-- 指明servlet的路径(包名+类名 -->
  <servlet-class>com.ncu.Hello</servlet-class>
 
  </servlet>
   <servlet-mapping>
   <!-- 这个servlet名必须和映射的一致 -->
     <servlet-name>hello</servlet-name>
   
  <!-- 这是在浏览器中输入的访问该servlet的url -->
  <url-pattern>/nicolas</url-pattern>
  </servlet-mapping>
</web-app>

然后部署应用后,启动tomcat服务,进行调试运行:

第一次被访问后,就会执行init()打印输出initialize。只会打印一次,接着不断刷新,刷新一次就执行一个service方法,打印一次service it


访问的路径就是我们在web。xml的 <url-pattern>/nicolas</url-pattern>

http://localhost:8086/servletDemo/nicolas

注意/nicolas是任意的。


然后servlet的销毁发生在reload或关闭tomcat时。

下面reload一下这个servletDemo应用,进入tomcat的管理应用页面(用户和密码一般配置为user:tomcat pwd:s3cret)



二:采用继承GenericServlet来开发servlet,只要重写service方法即可。

HelloServlet.java:

//这是第二种开发servlet的方法
//通过继承GenericServlet开发
package com.ncu;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class HelloServlet extends GenericServlet{

	@Override
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		//重写service方法
		try{
			PrintWriter pw=res.getWriter();
			pw.print("Hello ,GenericServlet");
			
		}catch(Exception e){
			e.printStackTrace();
		}
		
	}
	
}

web.xml配置这个servlet:

 </servlet-mapping>
  <servlet>
  <servlet-name>helloservlet</servlet-name>
  <servlet-class>com.ncu.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>helloservlet</servlet-name>
  <url-pattern>/helloservlet</url-pattern>
  </servlet-mapping>

访问:http://localhost:8086/servletDemo/helloservlet  调试运行:

三:

通过继承HttpServlet开发servlet

通过重写doGetdoPost方法。这是目前用的最多的一种方法。

helloHttpServlet.java文件:

package com.ncu;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class helloHttpServlet extends HttpServlet{

	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doDelete(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	protected void doDelete(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doDelete(req, resp);
	}

	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
	//	super.doGet(req, resp);
		
		//处理get请求
		try
		{
			PrintWriter rw=resp.getWriter();
			rw.print("HttpServlet  doGet()!!!");
			
		}catch(Exception e){
			e.printStackTrace();
		}
		
		
	}

	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doHead(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	protected void doHead(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doHead(req, resp);
	}

	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doOptions(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	protected void doOptions(HttpServletRequest arg0, HttpServletResponse arg1)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doOptions(arg0, arg1);
	}

	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPost(req, resp);
		//处理post请求
		
	}

	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doPut(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	protected void doPut(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPut(req, resp);
	}

	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doTrace(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	protected void doTrace(HttpServletRequest arg0, HttpServletResponse arg1)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doTrace(arg0, arg1);
	}

	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#getLastModified(javax.servlet.http.HttpServletRequest)
	 */
	@Override
	protected long getLastModified(HttpServletRequest req) {
		// TODO Auto-generated method stub
		return super.getLastModified(req);
	}

	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#service(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.service(arg0, arg1);
	}

	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
	 */
	@Override
	public void service(ServletRequest arg0, ServletResponse arg1)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.service(arg0, arg1);
	}
	
}

web。xml配置这个httpservlet:

<servlet>
  <servlet-name>helloHttpServlet</servlet-name>
  <servlet-class>com.ncu.helloHttpServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>helloHttpServlet</servlet-name>
  <url-pattern>/helloHttpServlet</url-pattern>
  </servlet-mapping>

运行截图:




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值