Java Servlet
Servlet
处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。
理解这个的前提是了解一些http协议的东西,并且知道B/S模式(浏览器/服务器)。
B/S:浏览器/服务器。
浏览器通过网址来访问服务器,比如访问百度,在浏览器中输入www.baidu.com,这个时候浏览器就会显示百度的首页,那么这个具体的过程,步骤是怎样的呢?这个就了解一下http请求和响应了
TomCat和servlet的关系
Request
Tomcat将http请求文本接收并解析,然后封装成HttpServletRequest类型的request对象,所有的HTTP头数据读可以通过request对象调用对应的方法查询到。
Response
编写Servlet
Eclipse JSP/Servlet 环境搭建
本文已经安装了JDK环境,如果没有安装请访问
https://www.runoob.com/java/java-environment-setup.html
Eclipse J2EE:http://www.eclipse.org/downloads/
Tomcat:http://tomcat.apache.org/download-70.cgi
Tomcat 下载安装
你可以根据你的系统下载对应的包(以下以Window系统为例):
接着我们可以双击 startup.bat 启动 Tomcat,弹出如下界面:
这个时候,本地的服务器就已经搭建起来了。如果想关闭服务器,可以直接关闭上面的窗口,或者在里面输入Ctrl+C禁止服务。
接着我们在浏览器中输入 http://localhost:8080/,如果弹出如下界面,表示tomcat安装成功并且启动起来了:
然后再回到启动页面:/bin/shutdown.bat 关闭服务器
将 Tomcat 和 Eclipse 相关联
Eclipse J2EE下载后,解压即可使用,我们打开Java EE ,选择菜单栏Windows-->preferences(Mac 系统为 Eclipse-->偏好设置),弹出如下界面:
在选项中,我们选择对应的 Tomcat 版本,接着点击 "Next",选择 Tomcat 的安装目录,并选择我们安装的 Java 环境:
创建实例
选择 "File-->New-->Dynamic Web Project",创建 TomcatTest 项目:
注意如果已默认选择了我们之前安装的 Tomcat 和 JDK 则可跳过此步。
在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>
<%@ 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":
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: