servlet / jsp(一)
2016-03-25 11:34:14
一、实现一个简单的servlet程序
Servlet是在服务器端运行的小程序,这是一个很广泛的概念,并没有说是在web服务器端运行的小程序,除了在web服务器上运行,还可以在email、ftp服务器上运行,而我们现在介绍的servlet是专门在web服务器端运行的小程序。

servlet-api.jar在tomcat下就有,可以直接复制过来,或者使用maven
HTTP的请求方式包括DELETE,GET,OPTIONS,POST,PUT和TRACE,在HttpServlet类中分别提供了相应的服务方法,它们是doDelete(),doGet(),doOptions(),doPost(),doPut() 和doTrace(),这里我们使用doGet()。
package com.nicole.servletDemo01; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class HelloWorldServlet extends HttpServlet { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("doGet");
//doGet打印到后台
resp.getWriter().write("<a href='http://www.baidu.com'>go</a>");
//在服务器端拿到了输出流向客户端里写一个百度超链接
} }
然后我们把servlet放到tomcat里面去(当然也可以直接在eclipse中添加服务器run on server)。
在目录下C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\testServlet\WEB-INF下创建了两个文件夹和一个web.xml

在classes文件夹,放置HelloWorldServlet.class,注意这里类文件的完整路径是
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\testServlet\WEB-INF\classes\com\nicole\servletDemo01,即classes文件夹下还有子文件夹;
建立一个lib文件夹,将servlet-api.jar包放进去;
web文件里规定访问途径:
<web-app 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_3_0.xsd"
version="3.0"
metadata-complete="true"> <servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.nicole.servletDemo01.HelloWorldServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>
</web-app>
根据url到web.xml中可以找到<url-pattern>(/helloworld)和相应的servlet-name(hello),再根据servlet-name就可以找到servlet-class (com.nicole.testServletDemo01)。
启动tomcat,输入URL:http://localhost:8080/testServlet/helloworld,可以看到一个百度页面的超链接go。

至于doGet,可以打开日志看到

二、servlet的生命周期
Servlet生命周期分为三个阶段:
1,初始化阶段 调用init()方法
2,响应客户请求阶段 调用service()方法
3,终止阶段,释放占用资源 调用destroy()方法
通过程序验证servlet的生命周期
package com.nicole.servletDemo02; import java.io.IOException; import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class ServletLifeCycle extends HttpServlet{ public ServletLifeCycle(){
System.out.println("constructor");
} @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("doGet");
} @Override
public void destroy() {
System.out.println("destroy");
} @Override
public void init(ServletConfig config) throws ServletException {
System.out.println("init");
} }
注意到init方法里带有参数Servletconfig。当servlet配置了初始化参数后(就是在web.xml中配置的一些参数),web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。
在web.xml中配置路径
<servlet-name>cycle</servlet-name>
<servlet-class>com.nicole.servletDemo01.ServletLifeCycle</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>cycle</servlet-name>
<url-pattern>/lifecycle</url-pattern>
</servlet-mapping>
输入URL:http://localhost:8080/testServlet/lifecycle,查看日志 “tomcat-stdout.2016-03-23”

多次访问该servlet,可以看到

关闭tomcat,可以看到:

总结servlet执行顺序如下:
加载:classloader将类加载进来;
实例化:new一个对象;
初始化:调用init方法;
处理请求:对于httpservlet来说,一般就是运行doget、dopost方法;
退出服务:调用destroy方法;
并且实例化和初始化只执行了一次,一直只有一个对象提供服务。
servlet / jsp(一)的更多相关文章
- NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
今天调试SSM框架项目后台JSOn接口,报出来一个让人迷惑的错误:NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config 上网查了一下别人的博 ...
- MVC开发模式之Servlet+jsp+javaBean
Servlet+jsp+JavaBean组合开发是一种MVC开发模式,控制器Controller采用Servlet.模型Model采用JavaBean.视图View采用JSP. 1.Web开发的请求- ...
- springMVC: java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
springMVC开发web的时候,报错:java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config 原因:未引入jstl ...
- Struts框架——(一)用Servlet + JSP演示Struts基本原理
一. 用Servlet + JSP演示Struts基本原理 struts是开源项目.它通过采用 Java Servlet/JSP 技术,实现了基于Java EE Web应用的MVC的应用框架.Stru ...
- Javabean+servlet+JSP(html)实例应用
大家都知道Javabean+servlet+JSP是最简单的MVC模式.的确,在一个小型的项目中,这个模式完全够用. 它优雅并且简洁.加上jQueryui的完美展示效果,让这个模式看起来非常合适.当然 ...
- 报错:严重: Servlet.service() for servlet [jsp] in context with path [/20161116-Struts2-6] threw exception [/index.jsp (line: 13, column: 20) No tag "textfiled" defined in tag library imported with prefix
严重: Servlet.service() for servlet [jsp] in context with path [/20161116-Struts2-6] threw exception [ ...
- servlet+jsp+java实现Web 应用
servlet+jsp+java实现Web 应用 用java来构建一个web应用是特别容易的事情,jsp和php很像,可以嵌套在html中.程序的结构很简单,也很清楚,本文主要记录下大概的开发过程和环 ...
- javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册
一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp ...
- 在Eclipse中配置Tomcat 创建和运行Servlet/JSP
在Eclipse中配置Tomcat 创建和运行Servlet/JSP 步骤一:在Eclipse中配置Tomcat(注意下载Eclipse IDE for Java EE Developers) (1) ...
- javax.servlet.jsp.JspException cannot be resolved to a type
javax.servlet.jsp.PageContext cannot be resolved to a type javax.servlet.jsp.JspException cannot be ...
随机推荐
- SQL优化(SQL TUNING)可大幅提升性能的实战技巧之一——让计划沿着索引跑
我们进行SQL优化时,经常会碰到对大量数据集进行排序,然后从排序后的集合取前部分结果的需求,这种情况下,当我们按照常规思路去写SQL时,系统会先读取过滤获得所有集合,然后进行排序,再从排序结果取出极少 ...
- 一篇分析诊断被"hang"住数据库的资料(Oracle Performance Diagnostic Guide——Hang/Locking)
该资料已上传至本人QQ群空间,如需该资料,可到本人QQ群空间查找.下面贴表文本: Oracle Performance Diagnostic GuideHang/LockingVersion 3.1. ...
- 小程序animation动画效果(小程序组件案例)
WXML <view class="container"> <view class="page-body"> <view clas ...
- zoj2112&&bzoj1901
题解: 可修改的主席树 一开始,我就按照最暴力的方法,空间nlognlogn 然后zju上面过不了,bzoj没有权限号 然后,参考了往上的论文,发现可以把初始的主席树先建好 然后,每次只需要维护修改的 ...
- Microsoft 数据访问组件 (MDAC) 的版本历史记录
http://support.microsoft.com/kb/231943/zh-cn http://support.microsoft.com/kb/301202
- 用正则表达式匹配用rdf3x处理过后的TTL格式文档
1.比如下面这个用rdf3x处理过后的TTL文档片段: 注意缩进的是两个空格 <http://rdf.ebi.ac.uk/resource/chembl/target/CHEMBL2363853 ...
- HTML5之pushstate、popstate操作history,无刷新改变当前url
一.认识window.history window.history表示window对象的历史记录,是由用户主动产生,并且接受javascript脚本控制的全局对象.window对象通过history对 ...
- git操作远端分支(转)
http://www.cnblogs.com/Camier-myNiuer/p/5558884.html 原文地址:http://hi.baidu.com/lingzhixu/blog/item/4a ...
- FTP 主动模式 与被动模式
今天在被电信运营商给的没有内网ip被nat后的内网ip访问我的ftp服务器时出现了,连接被关闭的错误,经过多番查询发现问题原因是因为NAT内网ip没有被有效地转换为外网ip,也即是说NAT对ftp协议 ...
- SWIFT解析天气JSON格式
访问以下链接可以得到京城当天的天气:http://www.weather.com.cn/adat/sk/101010100.html 返回的JSON格式如下: {"weatherinfo&q ...