Servlet/JSP

概念简介:

Servlet 是使用Java编写的一个Java类,通过Web容器的加在、初始化,受到容器的管理才能成为Servlet。

Web容器Java编写的一个应用程序,负责于服务器沟通,管理Sevlet所需的各种对象于数据、Sevlet生命周期,没有容器,无法想要客户端的请求。

JSP可以在HTML中潜入java代码的web页面,容器会将JSP网页转译为Sevlet并加在到容器中管理,所有的JSP最后都以Servlet的实例存在于容器中。

CGI:运行在服务器操作系统上的一个可执行程序,每次有请求过来,就会启动一次程序来处理请求,会对内存或CPU负担加重

Sevlet是运行在容器中,容器是由服务器上的JVM启动的,每次请求过来时,使用同一个容器来处理,由容器开启一个线程,并决定由哪个Sevlet来处理

Web容器于HTTP服务器程序不同,HTTP服务器程序用来接收客户端请求,与WEB容器交互,并返回处理后的信息。

Tomcat集成了web容器于http服务器的功能。

Sevlet应用程序原理:

1、客户端发出请求

2、HTTP服务器程序获得用户请求,动态程序由WEB容器处理

3、每一次请求开启一个线程,根据web.xml文件,寻找对应的url模式,找出Sevlet注册名词,选择对应的Sevlet类名

4、处理结束,返回

例如:

   访问http://localhost:9090/test/hello.do?name=hh

  首先当请求来到HTTP 服务器时,而HTTP服务器转交请求给容器,容器会创建一个代表当次请求的HttpServletRequest对象,将请求信息设置给该对象,创建一个HttpServletresponse对象以返回信息。

然后,容器根据web.xml的设置,找出处理该请求的Servlet,调用它的service()方法,service()方法会根据HTTp请求方式决定调用哪个do方法。

  若找不到对应规则,查看物理位置文件是否存在

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	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_2_5.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  <servlet-name>HelloServlet</servlet-name>
  <servlet-class>com.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>HelloServlet</servlet-name>
   <url-pattern>/hello.do</url-pattern>
  </servlet-mapping>
</web-app>
 

找到对应的servlet进行处理

package com;

import java.io.IOException;
import java.io.PrintWriter;

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

@SuppressWarnings("serial")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res){
	try {
		res.setContentType("text/html;charset=UTF-8");
		PrintWriter out = res.getWriter();
		String name = req.getParameter("name");
		out.println("<html>");
      out.println("<body>");
		out.println("<h1>信息"+ name);
		out.println("</h1>");
		out.println("</body>");
		out.println("</html>");
		out.close();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
}
}
 

猜你喜欢

转载自mylir.iteye.com/blog/1115175
今日推荐