Java Servlet

Servlet

处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。

理解这个的前提是了解一些http协议的东西,并且知道B/S模式(浏览器/服务器)

B/S:浏览器/服务器。

浏览器通过网址来访问服务器,比如访问百度,在浏览器中输入www.baidu.com,这个时候浏览器就会显示百度的首页,那么这个具体的过程,步骤是怎样的呢?这个就了解一下http请求和响应了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TomCat和servlet的关系

Tomcat Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.Servlet是一种运行在支持Java语言的服务器上的组件. Servlet最常见的用途是扩展Java Web服务器功能,提供非常安全的,可移植的,易于使用的CGI替代品.

    从http协议中的请求和响应可以得知,浏览器发出的请求是一个请求文本,而浏览器接收到的也应该是一个响应文本。但是在上面这个图中,并不知道是如何转变的,只知道浏览器发送过来的请求也就是request,我们响应回去的就用response

Request

Tomcathttp请求文本接收并解析,然后封装成HttpServletRequest类型的request对象,所有的HTTP头数据读可以通过request对象调用对应的方法查询到。

Response

      Tomcat同时会要响应的信息封装为HttpServletResponse类型的response对象,通过设置response属性就可以控制要输出到浏览器的内容,然后将response交给tomcattomcat就会将其变成响应文本的格式发送给浏览器

   

    Java Servlet API Servlet容器(tomcat)servlet之间的接口,它定义了serlvet的各种方法,还定义了Servlet容器传送给Servlet的对象类,其中最重要的就是ServletRequestServletResponse。所以说我们在编写servlet时,需要实现Servlet接口,按照其规范进行操作。

 

编写Servlet

Eclipse JSP/Servlet 环境搭建

本文已经安装了JDK环境,如果没有安装请访问

https://www.runoob.com/java/java-environment-setup.html

Eclipse J2EEhttp://www.eclipse.org/downloads/

Tomcathttp://tomcat.apache.org/download-70.cgi

Tomcat 下载安装

你可以根据你的系统下载对应的包(以下以Window系统为例)

下载之后,将压缩包解压到D盘(你可以自己选择):

注意目录名不能有中文和空格。目录介绍如下:

接着我们可以双击 startup.bat 启动 Tomcat,弹出如下界面:

这个时候,本地的服务器就已经搭建起来了。如果想关闭服务器,可以直接关闭上面的窗口,或者在里面输入Ctrl+C禁止服务。

接着我们在浏览器中输入 http://localhost:8080/,如果弹出如下界面,表示tomcat安装成功并且启动起来了:

然后再回到启动页面:/bin/shutdown.bat 关闭服务器

将 Tomcat 和 Eclipse 相关联

Eclipse J2EE下载后,解压即可使用,我们打开Java EE ,选择菜单栏Windows-->preferencesMac 系统为 Eclipse-->偏好设置),弹出如下界面:

上图中,点击"add"的添加按钮,弹出如下界面:

在选项中,我们选择对应的 Tomcat 版本,接着点击 "Next",选择 Tomcat 的安装目录,并选择我们安装的 Java 环境:

点击 "Finish",完成配置。

创建实例

选择 "File-->New-->Dynamic Web Project",创建 TomcatTest 项目:

点开上图中的红框部分,弹出如下界面:

注意如果已默认选择了我们之前安装的 Tomcat JDK 则可跳过此步。

然后,单击finish, 继续:

工程文件结构:

上图中各个目录解析:

WebContent文件夹下新建一个test.jsp文件。在下图中可以看到它的默认代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
											

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
					

<html>
					

<head>
					

<meta
						http-equiv="Content-Type"
										content="text/html; charset=UTF-8">
														

<title>Insert title here</title>
							

</head>
					

<body>
					

 

</body>
					

</html>
					

接着我们修改下test.jsp文件代码如下所示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
											

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
					

<html>
					

<head>
					

<meta
						http-equiv="Content-Type"
										content="text/html; charset=UTF-8">
														

<title>''</title>
							

</head>
					

<body>
					

<%
					

    out.println("Hello World!");
											

%>

</body>
					

</html>
					

程序运行之前,我们先修改一下浏览器选项:

接着我们运行该项目:

clipse会自动开启Tomcat服务器。所以我们先手动关掉tomcat软件,再次运行程序,就行了。控制台信息如下:

浏览器访问 http://localhost:8080/TomcatTest/test.jsp, 即可输出正常结果:

Servlet 实例创建

我们也可以使用以上环境创建 Servlet 文件,选择 "File-->New-->Servlet":

位于 TomcatTest项目的 /TomcatTest/src 目录下创建 "HelloServlet" 类,包为 "com.runoob.test":

HelloServlet.java 代码如下所示:

package com.runoob.test;
											

 

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 HelloServlet

 */
					

@WebServlet("/HelloServlet")
								

public
						class
								HelloServlet
										extends
												HttpServlet
														{
															

    private
							static
									final
											long serialVersionUID =
															1L;
																	

 


					/**

     * @see HttpServlet#HttpServlet()

     */
					


					public
							HelloServlet()
										{
											


					super();
							


					// TODO Auto-generated constructor stub
						


					}
						

 

    /**

     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

     */
					

    protected
							void doGet(HttpServletRequest request,
														HttpServletResponse response)
																		throws
																				ServletException,
																							IOException
																									{
																										

        // 使用 GBK 设置中文正常显示
						

        response.setCharacterEncoding("GBK");
										

        response.getWriter().write("''http://www.runoob.com");
							

    }
						

 

    /**

     * @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);
										

    }
						

 

}
					

创建 /TomcatTest/WebContent/WEB-INF/web.xml 文件(如果没有),代码如下所示:

<?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">
						


					<servlet>
						


						<!-- 类名 -->
						


					<servlet-name>HelloServlet</servlet-name>
								


						<!-- 所在的包 -->
						


					<servlet-class>com.runoob.test.HelloServlet</servlet-class>
								


					</servlet>
						


					<servlet-mapping>
						


					<servlet-name>HelloServlet</servlet-name>
								


						<!-- 访问的网址 -->
						


					<url-pattern>/TomcatTest/HelloServlet</url-pattern>
								


					</servlet-mapping>
						

</web-app>
						
						

接着重启 Tomcat,浏览器访问 http://localhost:8080/TomcatTest/HelloServlet

 

 

原文地址:https://www.cnblogs.com/XiaoGuanYu/p/9489476.html