1 Servlet是sun公司提供的一门用于开发动态web资源的技术。用户若用Java技术开发一个动态web资源或者网页,需要完成以下2个步骤:
① 编写一个Java类,实现servlet接口
② 把开发好的Java类部署到web服务器中

2 Servlet - Java 小程序

① servlet 就是java程序(java 类)

② servlet 遵循servlet 开发规范

③ servlet是运行在服务器端

④ 功能强大,几乎可以完成网站所有的需求

⑤ 学习jsp的基础

3 Servlet 和 Tomcat 在网络中的位置

4 Servlet 快速入门案例

Servlet 开发有三种方式

① 实现servlet 接口

② 通过继承GenericServlet

③ 通过继承HttpServlet

① 实现servlet 接口

  • 建立 web应用 TestWeb
  • 在 TestWeb 下建立 WEB-INF/web.xml
  • 在 WEB-INF 下建立 classes目录(servlet就要在这开发),建立lib目录
  • 实现 Servlet接口来开发 Servelt  编写FirstServlet.java 类然后编译
 import javax.servlet.*;
import javax.servlet.http.*; public class FirstServlet implements Servlet
{
//该函数用于初始化Servlet,把Servlet加载到内存,整个Servlet生命周期只会被调用一次
public void init(ServletConfig config) throws ServletException
{ } //获取ServletConfig对象
public ServletConfig getServletConfig()
{
return null;
} //该函数是服务函数,业务逻辑在这个函数实现
public void service(ServletRequest request, ServletResponse response)
{
PrintWriter out = response.getWriter(); out.println("Hello Servlet"+" "+ new java.util.Date());
} //返回Servlet配置信息
public String getServletInfo()
{
return null;
} //destroy()方法只会被调用一次,在 Servlet 生命周期结束时被调用
public void destroy()
{ }
}

  

  根据 Servlet 规范部署 Servlet,打开WEB-INF/web.xml 添加如下代码部署 FirstServlet:

   <!--Deploys the servlet to here -->
<servlet>
<!-- 自己定义 -->
<servlet-name>FirstServlet</servlet-name>
<!--FirstServlet所在项目的全路径(非物理路径,而是以项目WEB-INF\classes为根目录开始计算) -->
<servlet-class>FirstServlet</servlet-class>
</servlet> <servlet-mapping>
<!-- 与上面的servlet-name保持一致 -->
<servlet-name>FirstServlet</servlet-name>
<!-- 外部访问的url: 自己定义 -->
<url-pattern>/First</url-pattern>
</servlet-mapping>

  

  重启Tomcat,浏览器访问FirstServlet,输入的地址为:http://localhost:8080/TestWeb/First,最后的First就是web.xml 里配置的,可以随意定义。

  

  ③ 继承HttpServlet

  通过继承HttpServlet 开发 Servlet,需要重写 doGet,doPost方法。

  首先编写一个Login.html 用于访问SecondServlet,Login.html必须放在 \LatinyWeb\WEB-INF下

<html>
<body>
<form action="/TestWeb/Second" method="post">
user:<input type="text" name="username"/>
<input type="submit" value="login"/>
</body>
</html>

  

  然后编写SecondServlet.java 类,并在 web.xml配置外部访问的 url。

 public class SecondServlet extends HttpServlet
{
//在HttpServlet中,设计者对post与get提交分别处理
//doGet()与doPost()调用Servlet的service方法
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
res.getWriter().println("This is doGet method!");
} protected void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException
{
res.getWriter().println("This is doPost method!");
res.getWriter().println(req.getParameter("username")+" visits.");
}
}

  

  浏览器访问

  

  

  

  5 Servlet生命周期

  

  

Servlet生命周期简述

① 当Servlet第一次被调用时,首先会触发init 函数,该函数会把servlet实例加载到内存,它在整个生命周期只会被调用一次。

② 然后Servlet 的 service函数会被调用,后台业务逻辑都在此实现

③  第二次及以后调用Servlet,都是直接调用service函数。

④ 当web服务器停止或者reload时,tomcat关闭或者关机时,都会调用Servlet的destory函数销毁Servlet对象

Servlet 运行过程

Serlvet程序是由web服务器调用,web服务器接收到客户端请求后:

① Web服务器首先检查 Serlvet是否创建并且装载到内存,如果是则到第2步,如果未创建装载Serlvet 实例,则创建Servlet实例对象并且调用init函数装载该Servlet实例对象到内存中。

② 创建一个用于封装http请求消息的 HttpServletRequest 对象和一个代表http响应消息的 HttpServletResponse 对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。

③ Tomcat重启或者关闭时;reload 该webapp时;关闭电脑时;都会调用destroy()方法。

  

  

  

最新文章

  1. AbpZero--1.如何开始
  2. [NHibernate]Parent/Child
  3. jquery实现输入框聚焦,键盘上下键选择城市
  4. sqlserver 连接远程数据库小结
  5. `cocos2dx 非完整` UI解析模块
  6. linux2.6内核compat_ioctl函数
  7. unity 脚本(自定义组件)的事件触发关系
  8. SCAU 1138 代码等式
  9. 从XML文件乱码问题,探寻其背后的原理
  10. 处理IIS报“由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面”
  11. Java版本
  12. C语言格式化输入输出
  13. 数据库SQL语句中 查询选修了全部课程的学生的学号和姓名
  14. log4cplus在VS项目中的使用
  15. 洛谷P4344 [SHOI2015]脑洞治疗仪(ODT)
  16. debian图形界面安装安装GNOME中文桌面环境_刀光剑影_新浪博客 - Google Chrome
  17. day7 新三级菜单
  18. Yii2将查询数据变为键值对数组及查询构建器
  19. gcd和lcm模板
  20. 解决Sublime Text 3中文显示乱码和语法着色问题 等问题

热门文章

  1. NGINX Load Balancing - HTTP Load Balancer
  2. ab和jmeter进行GET/POST压力测试的使用心得和比较
  3. Codeforces Round #542 C. Connect 搜索
  4. 关于发邮件报错535 Error:authentication failed解决方法
  5. BZOJ1095:[ZJOI2007]Hide 捉迷藏(动态点分治)
  6. NET缓存框架CacheManager在混合式开发框架中的应用(1)-CacheManager的介绍和使用
  7. .NET 环境中使用RabbitMQ 转发 http://www.cnblogs.com/yangecnu/p/4227535.html
  8. ORA-27154: post/wait create failed ORA-27300 ORA-27301 ORA-27302
  9. 初学Python——文件操作
  10. 视觉机器学习------KNN学习