Servlet学习之Servlet概念与运行流程

Servlet介绍与使用

  • 什么是服务器:
  • Servlet的概念:
  • Servlet的特点:
  • Servlet的使用:
  • web.xml参数配置:

问题:

服务器在接收到浏览器的请求后,会自动调用对应的逻辑代码进行请求处理。但是逻辑代码是由程序员编写并放到服务器中,那么服务器怎么知道该怎么调用并调用哪个类和哪个方法来进行请求处理。

解决:

程序员在编写代码的时候如果能够按照服务器能够识别的规则进行编写, 浏览器按照指定的规则进行发送请求,那么服务器就可以调用并执行响应的逻辑代码进行请求处理了。

什么是服务器:

服务器也是一种计算机,只是安装了服务器软件,而服务器软件是由程序员开发出来的容器.(Eg:tomcat服务器就是安装了tomcat容器的计算机,而tomcat容器是java代码编写的,所以要运行tomcat容器,必须配置jdk环境).

Servlet的概念:

狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指 任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。 Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何 类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服 务器 .

Servlet的特点:

  1. 运行在支持java的应用服务器上
  2. Servlet的实现遵循了服务器能够识别的规则,也就是服务器会自动 的根据请求调用对应的servlet进行请求处理。
  3. 简单方便,可移植性强

Servlet的使用:

  1. 创建普通的java类并继承HttpServlet类
  2. 复写service方法
  3. 在Service代码中书写逻辑代码
  4. 在webRoot下的WEB-INF文件夹下的web.xml 文件中配置servlet (或使用注解,通过反射机制自动配置)

运行流程:

服务器地址:端口号/虚拟项目名 /servlet的别名

URI:虚拟项目名 /servlet的别名

浏览器发送请求到服务器,服务器根据请求URL地址中的URI信息在webapps目录下找到对应的项目文件夹, 然后在web.xml中检索对应的servlet,找到后调用并执行 Servlet。

web.xml参数配置:(三种配置方法)

Eg:

1.直接使用@WebServlet("虚拟项目名")配置

package cn.csuft.poorguy;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginView
 */
@WebServlet("/LoginView")
public class LoginView extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		String str = (String)req.getAttribute("str");
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset = utf-8");
		resp.getWriter().write("<html>");
		resp.getWriter().write("<head>");
		resp.getWriter().write("</head>");
		resp.getWriter().write("<body>");
		resp.getWriter().write("<h1>"+str+"</h1>");
		resp.getWriter().write("<form method = ‘get‘ action = ‘login‘>");
		resp.getWriter().write("用户名:<input type = ‘text‘ name = ‘name‘ value = ‘‘/>");
		resp.getWriter().write("<br/>");
		resp.getWriter().write("密码:<input type = ‘text‘ name = ‘pwd‘ value = ‘‘/>");
		resp.getWriter().write("<br/>");
		resp.getWriter().write("<input type = ‘submit‘ value = ‘login‘/>");
		resp.getWriter().write("</form>");
		resp.getWriter().write("</body>");
		resp.getWriter().write("</html>");
	}
}

  

2.通过配置WebRoot下的WebInfo文件夹下的web.xml配置如下(由于容易出错,不推荐直接配置)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>web02</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
      <!-- 声明Servlet对象 -->
      <servlet-name>LoginView</servlet-name>
      <!-- 上面一句指定Servlet对象的名称 -->
      <servlet-class>cn.csuft.poorguy.LoginView</servlet-class>
      <!-- 上面一句指定Servlet对象的完整位置,包含包名和类名 -->
  </servlet>
  <servlet-mapping>
      <!-- 映射Servlet -->
      <servlet-name>LoginView</servlet-name>
      <!--<servlet-name>与上面<Servlet>标签的<servlet-name>元素相对应,不可以随便起名  -->
      <url-pattern>/LoginView</url-pattern>
      <!-- 上面一句话用于映射访问URL -->
  </servlet-mapping>
</web-app>

3.可以通过Myeclipse自动生成web.xml,也可以使用eclipse自动生成注解

创建过程:

右击项目-->New-->Servlet  填写包名和类名

若想添加描述信息-->点击Next  否则-->点击Finish

下面是eclipse自动生成的注解:

package cn.csuft.poorguy;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class LoginView1
 */
@WebServlet("/LoginView1")
public class LoginView1 extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginView1() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

  

这篇博客主要总结了一下servlet的概念和运行流程,同时说明了三种常用的配置servlet的方法

小白创作,大佬勿喷,欢迎大佬指点

原文地址:https://www.cnblogs.com/PoorGuy/p/10359235.html

时间: 2024-08-03 19:29:35

Servlet学习之Servlet概念与运行流程的相关文章

servlet(一):Servlet的概念和运行流程

概念: 狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指 任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者. Servlet 运行于支持 Java 的应用服务器中.从原理上讲,Servlet 可以响应任何 类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服 务器 特点: 运行在支持java的应用服务器上 . Servlet的实现遵循了服务器能够识别的规则,也就是服务器会自动 的

IOS学习笔记1—Iphone程序运行流程

Iphone程序运行流程 main.m文件,iOS应用程序的主入口 main函数的两个参数为命令行参数,在ios开发中不会用到这些元素,包括这两个参数是为了与标准ANSI C保持一致 UIApplicationMain函数: 为应用程序提供主入口点,创建新的应用程序实例和它的委托.委托负责处理应用程序状态变更,并为那些变更提供响应 启动和加载窗口后,应用程序委托退居幕后,几乎所有应用程序语义都转到UIViewController类的某个子类,应用程序委托通常不再发挥作用,除非应用程序将要结束,或

Servlet简介与Servlet和HttpServlet运行的流程

1.Servlet [1] Servlet简介 > Server + let > 意为:运行在服务器端的小程序. > Servlet实际上就是一个接口. - 狭义上的Servlet,指的就是Servlet接口 - 广义上的我们认为凡是实现Servlet接口的类,我们都称他是一个Servlet ***** > Servlet的作用: 1.接收用户发送的请求 2.调用其他的java程序来处理请求 3.根据处理结果,返回给用户一个页面 > Servlet的HelloWorld 1.

Servlet的运行流程

Servlet的运行流程 看图: Servlet运行流程描述: 1.由web客户端发起请求 2.Web服务器接收到请求,但是服务器并不知道到如何处理,这时服务器会根据请求url当中的web上下文名来找到相应的web应用,把这个请求转发给web应用来处理 3.Web容器根据请求url中后面的path,作为url-pattern到web.xml里面去匹配,找到相应的servlet-name,然后再找到servlet-class 4.web容器会先到容器内查找有没有相应的Servlet实例,如果有,就

servlet学习笔记01基本概念

1.什么是servlet?答:servlet是一个按照Servlet规范编写的java程序,基于http协议,在服务器端运行(如:tomcat),要编写一个servlet,需要实现javax.servlet.Servlet接口,jsp是servlet的扩展,jsp第一次运行时,需要先被翻译成JAVA代码,再编译.class文件,其中的JAVA代码就是servlet.2.servlet作用答:用于处理客户端的请求3.servlet生命周期答:servlet的生命周期是由servlet的容器来控制的

Servlet处理流程分析-Servlet学习之旅(二)

tomcat的处理处理客户端流程分析 tomcat即是servlet容器也具有web服务器的功能,即也具有html页面的功能. 1.首先客户端会将html请求发给tomcat内置的web服务器 2.web服务器会将请求转发给servlet容器 3.servlet会产生servlet实例,以及向servlet传递表示请求和响应的HttpRequest和HttpResponse对象,servlet利用请求对象HttpRequest得到客户端的请求信息并进行处理. 4.servlet可能会将请求转发给

Servlet学习(三)Servlet编程实例-网站登录(修改版-增加数据库-附源码)

我们为刚才的那个示例Servlet学习(二)Servlet编程实例-网站登录添加上数据库,组成一个较为完整的登录功能. 在开始之前我们得首先了解下一些常用的java术语: PO(persistant object) 持久对象 在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了. 通常对应数据模型(数据库),本身还有部分业务逻辑的处理. 可以看成是与数据库中的表相映射的java对象. 最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合. PO中应该不包含

servlet学习笔记_1

一.动态页面和静态页面 动态页面&静态页面:如果浏览器在不同时刻不同条件下访问web服务器的某个页面,浏览器所获得的页面内容会发生变化,那么这种页面称之为动态页面.动态页面和静态页面的区别在于针对页面的访问请求,服务器能够在不同条件下返回给客户端的网页内容是否相同.要想web浏览器访问某一web页面的时候,能够查询出一些动态变化的实时信息,就必须采用动态页面. 动态页面和动态HTML页面:尽管动态HTML页面也能实现页面内容的改变,但是这种结果仅仅是浏览器执行的结果,而不是由于服务器的程序执行,

JAVA Web学习篇--Servlet

Servlet由来 做过BS项目的人都知道,浏览器可以依据HTML静态标记语言来显示各式各样的网页.可是假设我们须要在网页上完毕一些业务逻辑:比方登陆验证.或者说网页显示的内容在server的数据库中.假设是这样,除了负责显示的HTML标记之外,必须还要有完毕这些业务功能的代码存在.这样的网页我们就叫做动态网页. 对于静态网页而言,server上存在的是一个个纯HTML文件.当client浏览器发出HTTP请求时,server能够依据请求的URL找到相应的HTML文件,并将HTML代码返回给cl