JSP/Servlet笔记
一、Servlet简介
Servlet程序可以运行于任何服务器,如web、email、FTP等,所有servlet程序必须实现javax.servlet接口。GenericServlet是实现了javax.servlet接口的抽象类,其定义了servlet生命周期、初始化参数等方法,具有和应用层协议无关的特性,GenericServlet是所有servlet程序的父类,而我们只要求其运行在HTTP服务器上,可以通过继承GenericServlet子类HttpServlet就可以实现。
1、Web Application
Web Application包含WEB-INF和META-INF两部分,可以直接放在Tomcat的webapp下运行,也可以通过配置文件指定到其他目录。特别的:WEB-INF文件夹下的网页用户无法访问。
//Wen Application目录结构
WEB-INF
web.xml web app的配置文件
lib web app的库文件
classes 存放编译好的servlet
META-INF 存放web app的上下文信息,符合J2EE标准 //server.xml配置内容
<Context docBase="目录位置" path="虚拟路径" reloadable="true" debug=""/>
2、开发环境搭建
(1)配置jar包和web.xml
Dynamic Web project项目建立成功后, 第一步需要添加jar包,servlet程序依赖的servlet-api.jar包位于Tomcat的lib目录,需复制该jar包到项目的lib目录下,并【add to bulid path】加入到运行环境中。第二步需在新建web.xml文件中并配置如下信息:
<?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_2_5.xsd" version="2.5">
<!-- 欢迎页 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
(2)编写代码
import java.io.*;
import javax.servlet.http.*; public class FirstServlet extends HttpServlet {
// doGet方式参数在传递过程中,在URL地址中显示出来
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
//设置文档类型,使Html标签不被作为纯文本输出
response.setContentType("text/html;charset=UTF-8");
String name = request.getParameter("name");
PrintWriter pw = null;
try {
pw = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
pw.println(name+":HelloWord!");
} // doPost方式参数在传递过程中,在URL地址中隐藏了
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
// 不用重复代码,可以直接调用doGet方法
doGet(request, response);
}
}
(3)URL拦截配置
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/FirstServlet</url-pattern>
</servlet-mapping>
(4)运行结果

3、Servlet生命周期
servlet对象只在初次访问时进行一次实例化和初始化,再次访问不会再new处对象,等到程序结束时,调用destroy方法终止程序。在非分布的情况下,通常一个servlet在服务器中只有一个实例。
public class FirstServlet extends HttpServlet {
// ① 加载: ClassLoader
// ② 实例化,调用构造方法实例化对象,只执行一次
public FirstServlet(){
System.out.println("constructor");
}
// ③ 初始化,只在对象第一次初始化时执行一次
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("init");
}
// ④ 处理请求,容器自动调用service方法,执行doGet或doPost
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet");
}
// ⑤ 退出服务,destroy只在程序停止时调用
@Override
public void destroy() {
System.out.println("destroy");
}
}
二、请求与响应
1、请求处理方法
//分别对应HTTP协议的7中请求
doGet 响应Get请求
doPost 响应POST请求
doPut 用于http1.1协议
doDelete 用于http1.1协议
doHead 仅响应Get请求的头部,可用于比较页面是否已经被获取过,避免二次获取
doOptions 用于http1.1协议
doTrace 用于http1.1协议
2、request请求
(1)读取单个参数
String name = request.getParameter("name");
(2)读取全部参数
//① 获取表单中所有的具有name属性.返回一个Enumeration类型的枚举
Enumeration paramNames = request.getParameterNames(); while (paramNames.hasMoreElements()) { //② 获取控件 name
String paramName = (String) paramNames.nextElement(); //③ 根据name获取value值
String[] paramValues = request.getParameterValues(paramName);
// 当value只有一个值时
if (paramValues.length == 1) {
String paramValue = paramValues[0]; if (paramValue.length() == 0) {
System.out.print("值为null");
} else {
System.out.print(paramValues);
}
// 当value有多个值时
} else {
for (int i = 0; i < paramValues.length; i++) {
System.out.print(paramValues[i]);
}
}
System.out.println();
}
3、response响应
// 设置文档类型
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter(); pw.println("<!DOCTYPE html>");
pw.println("<html>");
pw.println("<head>");
pw.println("<title>生成动态网页</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("</body>");
pw.println("</html>");
四、会话控制
1、Cookie
2、Session
JSP/Servlet笔记的更多相关文章
- 新手学习JSP+Servlet笔记一
作为一个新手,初次接触jsp,servlet,习惯了后台的开发,前台的知识一窍不通,利用闲暇时间,给自己补补,从MyEclipse开始. 安装好MyEclipse之后,没有安装程序的可以下载 http ...
- jsp&servlet学习笔记
1.路径引用问题 一个css.jsp.html.或者javascript文件从从一个工程复制到另一工程,如果引用的时候使用的时相对路径,看似没有错误,但是却一直引用不进来,这时候要使用绝对路径,这样才 ...
- Servlet和JSP读书笔记(二)
一. GenericServlet 1. 前面写的 Servlet和JSP学习笔记(一) 中的实例都是通过实现Servlet接口编写的,这样存在的问题就是:你必须实现Servlet中的所有方法,而不管 ...
- jsp、servlet笔记
1.init 初始化Jsp&Servlet方法 destroy 销毁Jsp&Servlet之前的方法 service 对用户请求生成响应的方法2.Jsp文件必须在jsp服 ...
- JSP/Servlet Web 学习笔记 DayOne
JSP概述 1)JSP是一种动态网页技术标准,它是在传统的页面HTML文件中插入Java程序段和JSP标记(tag),从而形成JSP文件(*.jsp),也称JSP页面. 2)JSP容器是一个支持JSP ...
- JSP学习笔记(5)——Servlet、监听器、过滤器、MVC模式介绍
MVC模式 在讲解Servlet前,先介绍一下MVC模式. M:model 模型,相当于数据层,用于存放数据,如一个Java中的一个bean类 V:view 视图,相当于页面层,用于显示数据,如一个网 ...
- JSP&Servlet学习笔记----第3章
Web容器是JSP/Servlet唯一认识的HTTP服务器. HTTP是基于请求/响应的无状态通信协议. 流程: 1.请求来到HTTP服务器 2.HTTP服务器将请求转交给Web容器 3.Web容器创 ...
- JSP&Servlet学习笔记----第1/2章
HTML(HyperText Markup Language):超文本标记语言 HTTP(HyperText Transfer Protocol):超文本传输协议 URL(Uniform Resour ...
- JSP学习笔记
JSP学习笔记 Jsp网页主要分为Elements与Template Data两部分. Template Data:JSP Container不处理的部分,例如HTML内容 Elements:必须经由 ...
随机推荐
- 【转】tomcat优化-有改protocol 和 缓存 集群方案
tomcat优化 在线上环境中我们是采用了tomcat作为Web服务器,它的处理性能直接关系到用户体验,在平时的工作和学习中,归纳出以下七种调优经验. 1. 服务器资源 服务器所能提供CPU.内存.硬 ...
- C#中的类型相等与恒等(Equality & Identity)
l Equality:如果两个对象是相同的类型,并且它们各自带有相同和等值的属性.(They are instances of the same type and if each of the fi ...
- Robot Framework:接口测试
---恢复内容开始--- robotframework进行接口测试,需要安装Request和RequestLibrary包 pip install requests pip install -U ro ...
- Spring Cloud Alibaba 从孵化到 "挂牌" 之旅
背景 2014 年,Spring Boot 1.0 发布.Spring Boot 的发布绝对是 Pivotal 历史上具有里程碑意义的事件,它让我们能够非常简便地开发 Spring 应用,屏蔽了各种配 ...
- 实现Tab键的空格功能
有时使用编辑框需要用到按Tab键空两格,可能这时Tab键的功能不是空格而是页面切换等,这时需要设置: $(document).bind('keydown', function (event) { if ...
- [NOIP模拟16]题解
A.Blue 出题人大概已经去为国家处理积压子弹了? 贪心,让每一只青蛙(我怂行吧)都尽量往远跳,能到达的最远的被踩了就跳次远的,以此类推.可以维护一个单调队列,表示每只青蛙的位置(开始都是0).然后 ...
- Java-Class-C:org.springframework.util.Assert
ylbtech-Java-Class-C:org.springframework.util.Assert 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 1. /* * Copyr ...
- 3、加强siege性能测试
需求1:使用siege对多个页面进行加压 1.对如下3个页面加压 http://jrjf.hscx365.com/ http://jrjf.hscx365.com/solution/armyone.h ...
- VS下使用VIM, Visual Studio 安装 VSvim插件 配置 及使用
简介 VIM是一款很高效的编辑工具,所幸的是VS2012以后支持VIM的插件:VsVim.下面介绍插件的安装.配置及简单使用. 1. 下载安装 去官网下载,双击直接安装后,重新打开VS. https: ...
- Django框架(一)—— 安装使用Django
目录 Django入门 一.web应用 二.C/S 和B/S 架构 三.python中的web框架 四.http协议 五.URL简介 六.Django的安装和使用 Django入门 一.web应用 W ...