Java Web学习总结(2)Servlet(一)
一,Servlet 简介
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:
1,性能明显更好。
2,Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
3,Servlet 是独立于平台的,因为它们是用 Java 编写的。
4,服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
5,Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。
二,Servlet的运行过程
Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
②装载并创建该Servlet的一个实例对象。
③调用Servlet实例对象的init()方法。
④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
⑤WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
1,init()方法
init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化。
Servlet 创建于用户第一次调用对应于该 Servlet 的 URL 时,但是也可以指定 Servlet 在服务器第一次启动时被加载。
当用户调用一个 Servlet 时,就会创建一个 Servlet 实例,每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法。init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期。
init 方法的定义如下:
public void init() throws ServletException {
// 初始化代码...
}
2,service()方法
service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。
每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。
service()方法定义如下:
public void service(ServletRequest request,
ServletResponse response)
throws ServletException, IOException{
}
service() 方法由容器调用,service 方法在适当的时候调用 doGet、doPost、doPut、doDelete 等方法。所以,您不用对 service() 方法做任何动作,只需要根据来自客户端的请求类型来重写 doGet() 或 doPost() 即可。
3,doGet() 方法
GET 请求来自于一个 URL 的正常请求,或者请求来自于一个特别指定了 method 为 GET的 HTML 表单,它由 doGet() 方法处理。
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet 代码
}
4,doPost() 方法
POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet 代码
}
5,destroy() 方法
destroy() 方法只会被调用一次,在 Servlet 生命周期结束时被调用。destroy() 方法可以让您的 Servlet 关闭数据库连接、停止后台线程、把 Cookie 列表或点击计数器写入到磁盘,并执行其他类似的清理活动。
在调用 destroy() 方法之后,servlet 对象被标记为垃圾回收。
destroy 方法定义如下所示:
public void destroy() {
// 终止化代码...
}
三,Eclipse中开发Servlet
在eclipse中新建一个Dynamic web project工程
下一步
下一步
eclipse会自动创建下图所示目录结构:
创建一个HelloServlet类,继承HttpServlet,但是报错,这是由于没有关联servlet-api.jar
解决方法:
第一步:配置Tomcat服务器:Window-->Preferences-->Server-->RuntimeEnvironm-->add
选择Apache下的Tomcat7,下一步
点击Finish完成
完成后如图所示,已经配置好一个Tomcat了
第二步:项目关联刚才配置好的Tomcat服务器
右键单击项目-->Preferences-->Java Build Path-->Add library
选择Server Runtime,下一步
选择刚才配置的Apache Tomcat v7.0,点击Finish完成
这样就不会报错了。
重写doGet,doPost方法:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet{
private static final long serialVersionUID = 3903946972744326948L; @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置编码格式,否则中文会出现乱码
resp.setCharacterEncoding("GBK");
PrintWriter out = resp.getWriter();
out.println("Hello Servlet!");
out.println("你好 Servlet!");
}
}
修改web.xml,添加<servlet></servlet>和<servlet-mapping></servlet-mapping>两对标签
<?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>ServletDemo</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-name>HelloServlet</servlet-name><!-- servlet名称 -->
<servlet-class>com.zender.servlet.HelloServlet</servlet-class><!-- servlet关联的类 -->
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello.html</url-pattern><!-- servlet访问路径 -->
</servlet-mapping>
</web-app>
四,Eclipse中运行项目
控制台选择Servers-->点击如下图红框内容
添加New Server
把刚才创建的web项目添加到Configured,点击Finish完成
这样Tomcat服务器内已经部署上了ServletDemo的Web项目
右键单击Tomcat v7.0-->start
如图所示,Tomcat启动成功
浏览器访问:http://localhost:8081/ServletDemo/hello.html
最新文章
- 一步步构造自己的vue2.0+webpack环境
- 关于a标签自身的click事件所带来的一些影响
- Jquery 仿 android Toast效果
- tab使用 TabActivity TabHost Tabspec常用方法
- 使用python+pychram进行API测试(接口测试)初级STEP 1
- UVa 1328 Period
- Eclipse安装easyShell插件
- python Request库
- ubuntu14.04安装eclipse
- .NET 里操作Excel 出现有些列的数据取不到的问题
- 多文件上传artDialog+plupload
- 反汇编看c++引用
- Ng1从1.3开始的变更史
- day 25-1 接口类、抽象类、多态
- Linux systemctl 命令完全指南
- 【BARTS计划】【Share_Week1】社交产品思考
- printf、fprintf、sprintf和snprintf 区别
- eclipse 配置打开工作空间
- spring中集成shiro
- mfc标题栏 菜单 退出 关机 重启