JavaWeb 初步


1.  Servlet快速入门

1.1. 编写servlet 类

  入门:找Servlet所在包... 建立的工程必须web工程!!   自动导入javaee.jar类库!!

第一步: 创建普通java实现Servlet接口

 第一种写法:

package cn.itcast.day01_tomcat.servlet;

import java.io.IOException;

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

public class MyServlet1 implements Servlet{

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

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

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

	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// 表示  当前servlet对象被容器创建...该方法只执行一次.....
		System.out.println("hello ----init  初始化方法执行");
	}

	@Override
	public void service(ServletRequest arg0, ServletResponse arg1)
			throws ServletException, IOException {
		//   浏览器请求一次  该方法就执行一次.....
		System.out.println("hello ----service  业务方法执行");
	}

}



浏览器如何访问该servlet对象呢? http://localhost/day01_tomcat/

1: 该对象谁创建?

  服务器端开发: 对象servlet组件由容器创建(tomcat)

2: 浏览器如何访问该资源?

   当浏览器访问该资源的时候(http://localhost/day01_tomcat/),容器执行该对象创建 ...对应Init 方法就会执行,,,,

  

第二步:配置web.xml

web.xml 是当前工程的主配置文件 ,

   容器根据web.xml文件中的相关标签配置,自动创建该对象,并执行相关方法!!

 

标签:<servlet>  <servlet-mapping>

 <!-- 配置标签告知容器当浏览器请求目标资源给予相关的配置让服务器加载该servlet对象 -->

   <servlet>

      <servlet-name>MyServlet1</servlet-name>

      <!--类的全路径-->

      <servlet-class>cn.itcast.day01_tomcat.servlet.MyServlet1</servlet-class>

   </servlet>

   <!-- mapping映射通过在地址栏输入虚拟路基来使得浏览器访问servlet资源,虚拟路径对应着servlet的资源-->

   <servlet-mapping>

      <servlet-name>MyServlet1</servlet-name>

      <!--虚拟路径一定以斜杠(/)开头 -->

      <url-pattern>/servlet1</url-pattern>

      <!-- /servlet1表示浏览器访问servlet对应的虚拟路径-->

   </servlet-mapping>

 

 <servlet-class>cn.itcast.day01_tomcat.servlet.MyServlet1</servlet-class>

  右键类名 选择 copy  qualiedfied Name 即可!!,不要手写,容易出错!!!


Servlet接口

------ 实现类 GenericServlet ----- 子类 HttpServlet ---- 自定义Servlet 继承HttpServlet



第二种写法:

import java.io.IOException;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
//  GenericServlet 对象不包含  具有http协议 api 的 
public class MyServlet2 extends GenericServlet{

	@Override
	public void service(ServletRequest req, ServletResponse res)
			throws ServletException, IOException {
		//   编写业务即可与    获取客户端浏览器getMethod
		System.out.println("------servlet2  ----");
		
		//   浏览器访问服务器....  ServletRequest  (该对象 接受 浏览器(客户端)发送请求参数  )
		//   ServletResponse  服务器通过 该对象给予 客户端 响应数据 ..
		
		
	}

}



第三种写法:

分析

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

        HttpServletRequest  request;
        HttpServletResponse response;
        
        try {
            request = (HttpServletRequest) req;
            response = (HttpServletResponse) res;
        } catch (ClassCastException e) {
            throw new ServletException("non-HTTP request or response");
        }
        service(request, response);
    }


第三种写法实现:

package cn.itcast.day01_tomcat.servlet;

import java.io.IOException;

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

public class MyServlet3 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
    		throws ServletException, IOException {
    	//  浏览器的访问  请求方式... 7  种  get  post  service  方法 接受所有请求方式...  
    	//  HttpServlet 类   重写GenericServlet 提供抽象service 方法  自定义了一个service方法 
    	//  该方法里面 请求的方式 分类..根据浏览请求方式不同  调用不同的方法  
    	// 自定义的 servlet   不用重写 service   直接重写  具体请求方式业务方法!!
    	String  value  = req.getMethod();
    	System.out.println(value+"-----");
    }
}  

第四种实现方法:为了划分请求方式


因为HttpServelt中的已经帮我们区分了从浏览器发起的不同请求

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

        String method = req.getMethod();

        if (method.equals(METHOD_GET)) {
            long lastModified = getLastModified(req);
            if (lastModified == -1) {
                // servlet doesn't support if-modified-since, no reason
                // to go through further expensive logic
                doGet(req, resp);
            } else {
                long ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
                if (ifModifiedSince < (lastModified / 1000 * 1000)) {
                    // If the servlet mod time is later, call doGet()
                    // Round down to the nearest second for a proper compare
                    // A ifModifiedSince of -1 will always be less
                    maybeSetLastModified(resp, lastModified);
                    doGet(req, resp);
                } else {
                    resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
                }
            }

        } else if (method.equals(METHOD_HEAD)) {
            long lastModified = getLastModified(req);
            maybeSetLastModified(resp, lastModified);
            doHead(req, resp);

        } else if (method.equals(METHOD_POST)) {
            doPost(req, resp);
            
        } else if (method.equals(METHOD_PUT)) {
            doPut(req, resp);        
            
        } else if (method.equals(METHOD_DELETE)) {
            doDelete(req, resp);
            
        } else if (method.equals(METHOD_OPTIONS)) {
            doOptions(req,resp);
            
        } else if (method.equals(METHOD_TRACE)) {
            doTrace(req,resp);
            
        } else {
            //
            // Note that this means NO servlet supports whatever
            // method was requested, anywhere on this server.
            //

            String errMsg = lStrings.getString("http.method_not_implemented");
            Object[] errArgs = new Object[1];
            errArgs[0] = method;
            errMsg = MessageFormat.format(errMsg, errArgs);
            
            resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);
        }
    }



package cn.itcast.day01_tomcat.servlet;

import java.io.IOException;

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

public class MyServlet4 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    		throws ServletException, IOException {
    	//   该方法执行 只接受get请求...
    	System.out.println("----do get----");
    }
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    		throws ServletException, IOException {
    	//   只接受Post请求...
    	System.out.println("----do post----");
    }
}


第五种:相同的业务,代码冗余。


package cn.itcast.day01_tomcat.servlet;

import java.io.IOException;

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

public class MyServlet5 extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);// get请求 业务方法由dopost执行
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		System.out.println("get---post");
	}
}

第6种:用eclipse创建servlet,Name:Myservlet6


import java.io.IOException;

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

public class MyServlet6 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 开始进行servlet代码开发吧
		System.out.println("servlet 6 ---");

	}

}

第7种:优化模板

2014版本:

C:\Users\Administrator\AppData\Local\MyEclipse Professional 2014\plugins

修改  com.genuitec.eclipse.wizards_11.5.0.me201310291746.jar

2010版本:

C:\Users\lili\AppData\Local\MyEclipse\Common\plugins


修改Servlet.java种的doGet和doPost方法

用工具生产Servlet代码,以及web.xml种的配置


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值