Servlet三个要素

[java] view plain copy print?

1.必须继承自HttpServlet

2.必须实现doGet()或者doPost()

3.必须在web.xml中配置Servlet

HttpServeltRrequest:请求对象

getParameter():获得表单元素的值

getAttribute():获得request范围中的属性值

setAttribute():设置reqeust范围中的属性值

setCharacterEncoding():设置字符编码

HttpSerletResponse:相应对象

sendRedirect():外部跳转

getWriter():获得输出流对象

setContentType("text/html; charset=utf-8"):设置相应内容格式和编码

四种会话跟踪方式

[java] view plain copy print?

1.Session

HttpSession session = request.getSession();

session.setAttribute("name", "zhangsan");

session.setAttribute("pwd", "aaa");

String name = (String) session.getAttribute("name");

2.cookie:

//创建Cookie

Cookie cookie = new Cookie("name", "zhangsan");

//设置Cookie的超时时间

cookie.setMaxAge(24 60 60 *60);

//把Cookie发送到客户端

response.addCookie(cookie);

//得到客户端发送的Cookie

Cookie [] cookies = request.getCookies();

for(int i=0; i

Cookie temp = cookies[i];

String key = temp.getName();

String value = temp.getValue();

}

3.隐藏表单域

request.getParameter("name");

4.Url重写

问号传参

LoginServlet?username=zhangsan&pwd=123

String name = request.getParameter("username");

String pwd =request.getPareameter("pwd");

内部跳转和外部跳转

[java] view plain copy print?

内部跳转:

LoginServlet

request.getRequestDispatcher("index.jsp").forward(request, resposne);

外部跳转:

response.sendRedirect("index.jsp");

内部跳转是一次请求和一次响应

外部跳转是两次请求和两次响应

[java] view plain copy print?

ServletContext:Servlet上下文对象

它是一个公共区域,可以被所有的客户端共享

setAttribute():向公共区域里放入数据

getAttribute():从公共区域里取数据

三个标准范围:request, session, ServletContext

共同点:都有setAttribute(), getAttribute()

区别:范围不同,request < session < servletContext

服务器上的五大对象

request, response, servlet, session, servletContext

Jsp:Java Server Page

页面构成:7种元素

[java] view plain copy print?

1.静态内容:html

2.指令:page, include, taglib:

3.表达式:

4.Scriptlet

5.声明::变量和方法

6.动作:

7.注释:

客户端看不到的:

客户端可以看到的:

Jsp的执行过程

[java] view plain copy print?

1.转译:Jsp--->Servlet

2.编译:Servlet---->.class

3.执行:.class

第一次访问jsp的时候响应速度较慢,后面请求时响应速度快

脚本

[java] view plain copy print?

表达式:

Scriptlet:

声明:

指令

[java] view plain copy print?

page:language, import, errorPage, isErrorpage

include:file

taglib:uri:指定标签库描述符的路径 prefix:指定标签的前缀

隐式对象

[java] view plain copy print?

分类:

1.输入和输出对象:request(HttpServletRequest),

response(HttpServletResponse),

out(JspWriter), servlet中的out是PrintWriter

2.作用域通信对象:pageContext, request,

session(HttpSession),

application(ServletContext)

3.Servlet对象:page(this), config

4.错误对象:exception

JavaBean

[java] view plain copy print?

一个标准的JavaBean有三个条件

1.共有的类

2.具有不带参数的公共的构造方法

3.具有set()和get()方法

4.私有属性

Jsp中的标准动作

[java] view plain copy print?

1.useBean:创建JavaBean的一个实例

2.setProperty:给JavaBean的属性赋值

value和param不能同时使用

偷懒的方法:

这个时候需要注意的是,表单元素的名字必须和JavaBean的属性值

一模一样

3.getProperty:获得JvaBean的属性值

4.forward:内部跳转,相当于request.getRequestDispatcher().forward(request, response);

5.include:包含

表达式语言

[java] view plain copy print?

EL: Expression Language

语法格式: ${表达式 }

表示式 = 运算符 + 操作数

运算符:跟Java比较,多了一个empty, 少了一个赋值运算符

${empty ""} : true

${empty null} :true

操作数:

-->常量:布尔型(true/false), 整型, 浮点型, 字符串(可以用'', 还可以用""), Null

-->变量:

1.指的是放在四个标准范围里的属性(page, request, session, application)

2.在编准范围内的搜索顺序:page-->request--->session--->application

3.怎么取得变量值:点运算符., 还以用[]

request.setAttribute("name", "lisi");

%>

${requestScope.name}

或者

${requestScope["name"]}

-->隐式对象

1.pageContext:通过它可以访问request, session, servletContext

2.跟范围由关的:pageScope, requestScope, sessionScope, applicationScope

3.跟输入有关的:param, paramValues

4.其他的:header, cookie, headervalues,

EL表达式适用的场合:

1.可以在静态文本中使用

2.与自定义标签结合使用

3.和JavaBean结合使用

${stu.stuName}

自定义标签

[java] view plain copy print?

1.标签处理程序实现

--->实现:继承自BodyTagSupport或者TagSupport

一般会重写doStartTag(), doEndTag(), doAfterBody()

--->描述:在标签库描述符文件中描述(.tld)

1.0

2.0

simpletag

showbody

com.westaccp.test.ShowBodyTag

empty/jsp

color

--->使用:

2.标签文件

--->实现和描述

在.tag文件中实现

设置主体内容:

设置属性:

有主体内容:

String body = (String) session.getAttribute("theBody");

%>

--->使用

WEB-INF/tags/sayhello.tag

标准标签库

[java] view plain copy print?

1.核心标签库

-->通用:

set:

out:

remove:

-->条件:

if:.....

choose:

...

...

...

.....

...

-->迭代:

forEach:

foTokens:

Java,C#;SQLC

2.I18N与格式化标签库

-->setLocale:设置本地区域

-->bundle:设置资源包

-->setBundle:设置资源包

-->message:输出消息

3.SQL标签库

-->setDataSource:设置数据源,用于获得与数据库的连接

-->query:执行查询

-->update:执行增,删,改

-->transaction:事务

-->param:参数

4.XML标签库

过滤器

[java] view plain copy print?

生命周期:

1.实例华:

2.初始化:init()

3.过滤:doFilter()

4.销毁:destroy()

5.不可用

配置

[java] view plain copy print?

几个重要的接口

[java] view plain copy print?

1.Filter:init(), doFilter(), destroy()

2.FilterChain: doFilter(request, response)

3.FilterConfig:getFilterName(), getInitParameter(),

过滤器链

--->1--->2--->3--->Servlet 请求

MvC设计模式

[java] view plain copy print?

1.ModelI:jsp+JavaBean

2.ModelII:jsp+Servlet+JavaBean

jsp---view

servlet---control

javabean---model

MVC:

M--Model:模型:访问后台数据库

V--view:视图:展示

C--control:控制器:控制程序流程

ModelII和MVC的关系:

MVC是一种设计模式,ModelII它是MVC的一种具体的实现

java中servlet知识_jsp_Servlet常用知识总结相关推荐

  1. Java中易忽略的基础知识

    欢迎关注我的公众号[软件大爆炸] Java学习中的碎碎念 Java中易忽略的基础知识 Java面向对象基础 Java中的核心类 Java抽象类和接口 Java中的异常 Java中的泛型与集合 Java ...

  2. 利用JAVA中关于继承的相关知识求得圆柱体体积并输出

    利用JAVA中关于继承的相关知识求得圆柱体体积并输出 Write a program: 1)Define a Circle class and a Cylinder class, which is d ...

  3. java中关于IO流的知识总结(重点介绍文件流的使用)

    今天做软件构造实验一的时候,用到了java文件流的使用,因为之前学的不是很踏实,于是决定今天好好总结一下, 也方便以后的回顾. 首先,要分清IO流中的一些基础划分: 按照数据流的方向不同可以分为:输入 ...

  4. 【JAVA中String类的相关知识】

    文章目录 一.创建字符串 1.1创建字符串时的内存布局 二.字符串比较相等 2.1equals方法 三.字符串常量池 3.1实例化操作的内存布局 3.2intern手动入池 四.理解字符串不可变 4. ...

  5. java中IO流的相关知识

    目录 一.背景 二.IO流的分类 三.字符流操作相关代码示例 1.FileReader读取文件内容 2.FileWriter向文件写数据 3.实现文件内容复制 4.注意事项 5.利用try-catch ...

  6. java中object类型_Java常用类object详解

    1.Object概述: 类Object是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括数组)都实现这个类的方法. 2.构造方法详细信息: Object只有一个无参构造方法,因为ob ...

  7. java中lambda(箭头函数)常用例子

    Java8 lambda表达式10个示例 例1.用lambda表达式实现Runnable 我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最 ...

  8. 呕心整理Java中的12种常用设计模式以及应用场景

    目录 单例模式 饿汉模式 懒汉模式 线程锁模式 双重判断模式 静态内部类模式 策略模式 工厂模式 简单工厂 抽象工厂 门面模式 装饰器模式 责任链模式 享元模式 观察者模式 代理模式 静态代理模式 动 ...

  9. java多线程安全解决方案_java常用知识:多线程安全问题的解决方法-Lock锁

    jdk1.5后出现的 两个方法: void Lock() void unlock() 使用步骤: 1.在成员位置创建一个ReentrantLock对象 2.在可能出现安全问题的代码前调用Lock接口中 ...

最新文章

  1. RookeyFrame 删除 线下添加的model
  2. 用node批量压缩html页面
  3. 23. C# -- 封装
  4. java连接sqlserver2008_java连接sqlserver2008驱动包
  5. 梦幻西游易语言辅助教程
  6. Android 深度学习gan网络,使照片变为动漫化风格,毕业设计源码,android studio编译
  7. 计算机教师成绩分析总结与反思,小学教师成绩分析总结与反思
  8. HTML5制作个人理财系统,个人股票理财专题页面html模板
  9. 计算机组成原理(动态随机存储器)
  10. petalinux 1144文档 安装流程
  11. 『摄影知识』自然光的应用
  12. “天成云”品牌发布——Tungsten Fabric助力开源开放生态发展
  13. 局域网聊天工具都有哪些?
  14. 从100PV到1亿级PV网站架构演变(转)
  15. 从零开始学单片机c语言 pdf,从零开始学习单片机.pdf
  16. F5的SSL加解密和负载均衡器如何提高安全性?
  17. 用计算机弹现在最火的英文歌,抖音最火的英文歌曲排行榜,2018抖音最火的英文歌(80首)...
  18. 绿色版QQ2010SP3手记
  19. Java基础--用程序模拟打怪游戏
  20. MSN、易趣、大旗被挂马 用户浏览后感染机器狗病毒

热门文章

  1. 面试官又整新活,居然问我for循环用i++和++i哪个效率高?
  2. C++总结篇(3)String类
  3. python opencv过滤红色
  4. 离线部署 CDH 6.2 及使用 CDH 部署 Hadoop3 大数据平台集群服务
  5. php 图片后缀,PHP如何实现图片无后缀
  6. c++设计新思维_贵阳花溪区初三冲刺多少钱,新思维
  7. 如何用java对接口发送请求_7. 用Java做接口测试1-发送HTTP请求和接收HTTP响应
  8. 多线程导出excel高并发_大牛带你深入java多线程与高并发:JMH与Disruptor,确定能学会?...
  9. java core 生成路径_core文件生成和路径设置
  10. c语言中执行一次的函数once,iOS只执行一次的方法