摘要:信息录入输入内容提交同样,我们也需要在下添加一条路由映射规则这样我们在中输入信息后就会跳转到,这样就可以通过对象获取到变量的值。
Servlet(服务端小程序)是使用Java语言编写的服务端小程序,可以用于生成动态的Web页面。
Servlet处理的基本流程客户端通过HTTP提出请求。
Web服务器接受该请求并将其发送给Servlet。如果这个Servlet还没有被加载,Web服务器会将它加载到Java虚拟机并执行它。
Servlet程序将接收该HTTP请求并执行某种处理。
Servlet会将处理后的结果向Web服务器返回应答。
Web服务器将从Servlet收到的应答发回给客户端。
在整个Servlet程序中,最重要的就是Servlet接口,在此接口下定义了一个GenericServlet的子类,但是一般不会直接继承这个子类,而是根据不同的协议选择GenericServlet的子类来继承,例如:
首先我们要明确的一件事是:在处理HTTP请求的Servlet程序中,肯定要继承HttpServlet类,那么在自定义的Servlet中至少要覆写HttpServlet中提供的doGet()方法。
javapackage servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out = resp.getWriter(); out.print("First Servlet "); out.println(""); out.println("Hello world
"); out.println(""); out.close(); } }
写好这个Servlet然后编译,还不能访问,因为我们还需要找到一个钩子让网页跟我们的Servlet联系起来。那么这个“钩子”就是配置web.xml的路由映射:
xmlhello servlet.HelloServlet hello /helloServlet
这样,就可以通过../helloServlet查看效果:
如果表单使用的是post的方式提交的,所以在编写Servlet程序时要使用doPost()方法。
input.html:
html信息录入
InputServlet.java:
javapackage servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * Created by mcbird on 14/11/24. */ public class InputServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String info = req.getParameter("info"); PrintWriter out = resp.getWriter(); out.println(""); out.println("" + info + "
"); out.println(""); out.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
同样,我们也需要在web.xml下添加一条路由映射规则:
web.xml:
xmlinput servlet.InputServlet input /inputServlet
这样我们在input.html中输入信息后就会跳转到InputServlet,这样InputServlet就可以通过req对象获取到info变量的值。
Servlet生命周期Servlet的生命周期包括加载程序、初始化、服务、销毁、卸载5个部分,如下图所示。
当Web容器启动时或者是在第一次使用这个Servlet时,容器会负责创建Servlet实例,但是必须在web.xml中指定Servlet的位置,成功加载后,Web容器会通过反射的方式对Servlet进行实例化。
初始化当一个Servlet被实例化后,容器将调用init()方法初始化这个对象,初始化的目的是为了让Servlet对象在处理客户端请求前完成一系列初始化的工作,像建立数据库的连接、读取资源文件信息等,如果初始化时失败了,那么Servlet将被直接卸载。
处理服务当有请求提交时,Servlet将调用service()方法(常用的是doGet()或doPost())进行处理。
销毁当Web容器关闭或者检测到一个Servlet要从容器中被删除时,会自动调用destroy()方法,以便让实例释放掉所占用的资源。
卸载当一个Servlet调用完destroy()方法后,此实例将等待被垃圾收集器所回收,如果需要再次使用此Servlet时,会重新调用init()方法进行初始化。
在默认情况下,初始化方法是在第一次使用时才调用,你也可以通过在web.xml中配置servlet的
1 这样在容器启动时Servlet就会被初始化。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/64275.html
摘要:前言由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 前言 由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 由于更新比较频繁,因此隔一段时间才会更新目录导航哦~想要获取最新原创的技术文章欢迎关注我的公众号:Java3y Java3y文章目录导航 Java基础 泛型就这么简单 注解就这么简单 Druid数据库连接池...
摘要:基础问题的的性能及原理之区别详解备忘笔记深入理解流水线抽象关键字修饰符知识点总结必看篇中的关键字解析回调机制解读抽象类与三大特征时间和时间戳的相互转换为什么要使用内部类对象锁和类锁的区别,,优缺点及比较提高篇八详解内部类单例模式和 Java基础问题 String的+的性能及原理 java之yield(),sleep(),wait()区别详解-备忘笔记 深入理解Java Stream流水...
摘要:基础问题的的性能及原理之区别详解备忘笔记深入理解流水线抽象关键字修饰符知识点总结必看篇中的关键字解析回调机制解读抽象类与三大特征时间和时间戳的相互转换为什么要使用内部类对象锁和类锁的区别,,优缺点及比较提高篇八详解内部类单例模式和 Java基础问题 String的+的性能及原理 java之yield(),sleep(),wait()区别详解-备忘笔记 深入理解Java Stream流水...
阅读 2159·2021-11-18 10:02
阅读 3261·2021-11-11 16:55
阅读 2675·2021-09-14 18:02
阅读 2409·2021-09-04 16:41
阅读 2020·2021-09-04 16:40
阅读 1098·2019-08-30 15:56
阅读 2190·2019-08-30 15:54
阅读 3145·2019-08-30 14:15