Servlet 简单入门

1、通用初级阶段html

1. 得写一个 web 工程,一个服务器java

切换另外一个工做空间 -------- File ------- switchworkspace 。
修改字体,Genernl 中 app 中 color 中 basic 中 test ,改编码。

再配服务器,右键 new 一个 server ,按着感受来,再而后 open ,点击第二个,保存all。

创建一个 Dymamic web Servlet,输入名字, 3.0 改为 2.5 。

在工程里创建一个 html 文件,如何在其余电脑访问这个 html 文件。在工程处右键点击 Run as ...

  就能够在其余电脑上访问了:       http://localhost:8080/HelloServlet/index.html

2. 测试运行 web 工程。web

1. 新建一个类, 实现Servlet接口浏览器

public class HelloServlet 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 {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		System.out.println("hello,zhangkaijian");
		
	}
	
}

只在 service 中添加语句。tomcat

2. 配置Servlet , 用意: 告诉服务器,咱们的应用有这么些个servlet服务器

在webContent/WEB-INF/web.xml里面写上如下内容。


		  <!-- 向tomcat报告, 我这个应用里面有这个servlet, 名字叫作HelloServlet , 具体的路径是com.itheima.servlet.HelloServlet -->
		  <servlet>
		  	<servlet-name>HelloServlet</servlet-name>
		  	<servlet-class>com.itheima.servlet.HelloServlet</servlet-class>
		  </servlet>
		  全路径就是包名+类名
		  <!-- 注册servlet的映射。  servletName : 找到上面注册的具体servlet,  url-pattern: 在地址栏上的path 必定要以/打头 -->
		  <servlet-mapping>
		  	<servlet-name>HelloServlet</servlet-name>
		  	<url-pattern>/a</url-pattern>
		  </servlet-mapping>

		3. 在地址栏上输入 http://localhost:8080/项目名称/a
</welcome-file-list>
  
  <servlet>
  	<servlet-name>HelloServlet</servlet-name>
  	<servlet-class>com.heima.servlet.HelloServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>HelloServlet</servlet-name>
  	<url-pattern>/a</url-pattern>
  </servlet-mapping>
  
  
</web-app>

先后的 servlet -name 必须相同app

a.(向tomcat报告, 我这个应用里面有这个servlet, 名字叫作HelloServlet , 具体的路径是com.itheima.servlet.HelloServlet)前面一段修改的内容eclipse

b.(注册servlet的映射。 servletName : 找到上面注册的具体servlet, url-pattern: 在地址栏上的path 必定要以/打头) -------后面一段ide

配置好了以后,重置Tomcat服务器,在浏览器中输入 http://localhost:8080/HelloServlet/a ,回头看 eclipse 中的 setup 信息 。有信息出现就说明成功了。post

在 弄全路径时,

<servlet-class>com.heima.servlet.HelloServlet02</servlet-class>

在类的下线点击,再复制全路径。

2、利用继承关系,重写方法。

<servlet>
  	<servlet-name>HelloServlet02</servlet-name>
  	<servlet-class>com.heima.servlet.HelloServlet02</servlet-class>
  </servlet>
  
  <servlet-mapping>
  
  <servlet-name>HelloServlet02</servlet-name>
  <url-pattern>/HelloServlet02</url-pattern>
  
  </servlet-mapping>

继承类

public class HelloServlet02 extends HttpServlet {

//	@Override
//	protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
//		System.out.println("hellodaishiqi02-----");
//	}
		
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doGet(req, resp);
		System.out.println("get--");
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPost(req, resp);
		System.out.println("post--");
	}
}

在浏览器里输入:http://localhost:8080/HelloServlet/HelloServlet02,便可。

 

3、Servlet 生命周期

在其中 doGet 和 doPost 方法中 ,都不用 super 中父类的方法。,直接删掉。

init方法

在建立该servlet的实例时,就执行该方法。
		一个servlet只会初始化一次, init方法只会执行一次
		默认状况下是 : 初次访问该servlet,才会建立实例

service方法

只要客户端来了一个请求,那么就执行这个方法了。
	 	 该方法能够被执行不少次。 一次请求,对应一次 service 方法的调用

destroy方法

servlet 销毁的时候,就会执行该方法
		
		  	1. 该项目从 tomcat 的里面移除。
		  	2. 正常关闭 tomcat 就会执行 shutdown.bat

doGet 和 doPost不算生命周期方法,所谓的生命周期方法是指,从对象的建立到销毁必定会执行的方法, 可是这两个方法,不必定会执行。

 

让Servlet建立实例的时机 提早。

 

  1. 默认状况下,只有初次访问 Servlet 时才会实例化。才会执行 init 方法。有的时候,咱们可能须要在这个方法里面执行一些初始化工做,甚至是作一些比较耗时的逻辑。
  2. 那么这个时候,初次访问,可能会在init方法中逗留过久的时间。 那么有没有方法可让这个初始化的时机提早一点。
  3. 在配置的时候, 使用load-on-startup元素来指定, 给定的数字越小,启动的时机就越早。 通常不写负数, 从2开始便可。
<servlet>
		  	  <servlet-name>HelloServlet04</servlet-name>
		  	  <servlet-class>com.itheima.servlet.HelloServlet04</servlet-class>
		  	  <load-on-startup>2</load-on-startup>
		    </servlet>

 

ServletConfig

在测试类中

public class HelloServletConfig extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//  获得servlet配置对象 。 专门用于在配置servlet的信息
         ServletConfig config = getServletConfig();
        
         //获取到的是配置servlet里面 servlet-name 的文本内容
		String servletName = config.getServletName();
		System.out.println("servletName"+servletName);
		
        //二、。 能够获取具体的某一个参数。 

		String address = config.getInitParameter("address");
		System.out.println("address="+address);
		
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req,resp);
		
	}
}

在上面 doGet 方法中 ,还能够遍历出全部参数和名称。

Enumeration<String> names = config.getInitParameterNames();
		//遍历取出全部的参数名称
				while (names.hasMoreElements()) {
					String key = (String) names.nextElement();
					String value = config.getInitParameter(key);
					System.out.println("key==="+key + " value="+value);
					
				}

 

在 web.xml 中

<servlet>
		  	<servlet-name>aa</servlet-name>
		  	<servlet-class>com.heima.servlet.HelloServletConfig</servlet-class>
  	
		  	<init-param>
			  	<param-name>address</param-name>
			  	<param-value>beijing...</param-value>
		  	</init-param>
  	
  	
  </servlet>
  
  <servlet-mapping>
		  
		  <servlet-name>aa</servlet-name>
		  <url-pattern>/HelloServletConfig</url-pattern>
  
  </servlet-mapping>
相关文章
相关标签/搜索