JSP全称为Java Server Pages,其根本是一个简化的Servlet设计,实现了在Java中使用html标签。JSP是一种动态网页技术标准,也是JavaEE的标准。JSP同Servlet一样,是在服务器端执行的

三种开发技术对比

Jsp

Asp.net

PHP

基于Java平台,安全性高,跨平台型好,维护量大,适合大型企业

简单易学,但安全性与跨平台性差

简单高效,成本低,尤其适合中小型企业的Web应用开发

对于PHP有一个黄金组合,LAMP(Linux+Apache+MySQL+PHP)

JSP页面元素构成

指令

表达式

小脚本

声明

注释

静态内容

指令

page指令:位于页面顶端,同一个页面可以有多个page指令

include指令:将一个外部文件嵌入到当前的JSP文件中,同时解析这个页面中的JSP语句

taglib指令:使用其定义新的自定义标签,并在JSP页面中启用这些定制的标签

page指令

语法格式:

常用属性

描述

默认值

language

指定JSP页面使用的脚本语言

java

import

通过该属性引用脚本语言中使用到的类文件

contentType

用来指定JSP页面所采用的编码方式

text/html; ISO-8859-1

推荐将contenType的值改为:text/html; charset=UTF-8

注释

在JSP中可以使用三种格式的注释

html注释

这种注释在客户端是可见的,即可以通过查看页面源码(F12)的方式看到

JSP注释

这种注释在客户端不可见

JSP脚本注释(注意还是需要包围)

注释*/%>这种在客户端不可见

小脚本

本身就是可以在JSP页面中执行的java代码

语法:

需要注意:在JSP中System.out.println()是在java控制台输出,而想要在页面输出,必须使用out.println()

如果在这一步中出现对out.println()的编译报错,可能是没有引入tomcat的jar包

声明

声明就是在JSP页面中定义变量或者方法

语法:

例如:

String s = "haha";

int add(int x, int y){

return x+y;

}

%>

表达式

在JSP页面中执行的表达式

语法:

注意:表达式不以分号为结束,而且第一个%号与=号之间不能有空格

JSP页面的生命周期

jspService()方法用来处理客户端的请求。对于每一个请求,JSP引擎创建一个新的线程来处理该请求,如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量和响应时间,但也要注意多线程带来的同步问题,由于该Servlet始终驻留在内存,所以响应是非常快的。

jspService()和jspInit()方法可以在tomcat的work目录中,找到对应的工程进行查看

JSP内置对象

JSP内置对象是Web容器所创建的一组对象,不使用new关键字就可以使用的对象。

常用内置对象有:

out

request

response

session

application

out对象

方法名

含义

void println()

向客户端打印字符串

void flush()

将缓冲区的内容输出到客户端

void clear()

清除缓冲区内容,如果在flush()之后调用会抛出异常

void close()

关闭输出流

void clearBuffer()

清除缓冲区内容,在flush()之后调用不会抛出异常

int getBefferSize()

返回缓冲区的字节数大小,如不设置缓冲区则返回0

int getRemaining()

返回缓冲区还剩余多少可用

boolean isAutoFlush()

返回缓冲区满时,是自动清空还是抛出异常

request对象

它是HttpServletRequst类的实例。客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求并作出响应。

response对象

是HttpServletResponse类的实例,包含了响应客户请求的有关信息。该对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其它页面的response对象对当前页面无效。

尽管response对象比较重要,但实际在JSP中,很少直接去使用它

值得注意的是:

这是一个相应页面

out.println("out生成的页面");

PrintWriter outer = response.getWriter();

outer.println("outer新生成的对象");

%>

执行后的页面结果为:

outer新生成的对象

这是一个相应页面

out生成的页面

也就是是,通过response.getWriter()方法获得的PrintWriter对象会显示在正常的页面流的前面。为了解决这种问题,可以通过out.flush()将outer对象前面的部分进行强制输出

session对象

是HttpSession类的实例。session对象在第一个JSP页面被装载时自动创建,完成会话期管理

session生命周期

创建:当客户端第一次访问某个jsp或者Servelet时,服务器会为当前会话创建一个SessionId,每次客户端向服务器发送请求时,都会将这个SessionId携带过去,服务器会对它进行校验

活动:

某次会话当中通过超链接打开的新页面属于同一次会话

只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话

除非本次会话的所有页面都关闭(主动关闭或超时关闭),重新访问某个jsp或者Servelet将会创建新的会话

注意原有会话还存在,即这个旧的SessionId仍然存在于服务器中,只不过再也没有客户端会携带它然后交予服务器进行校验

销毁:有三种方式

调用session.invalidate()方法

Session过期(超时)

服务器重新启动

application对象

application对象开始于服务器的启动,终于止服务器的关闭(服务器的启动和关闭决定了application对象的生命)。

application对象实现了用户间数据的共享,可以存放全局变量。在用户的前后连接或者不同用户之间的连接中,可以对application对象的同一属性进行操作,在任何地方对application对象属性的操作,都会影响到其他用户对此的访问。

JavaBeans

JavaBeans就是符合某种特定规范的Java类。使用JavaBeans的好处是解决代码重复编写,减少代码冗余,功能区分明确,提高代码的可维护性

附录

get与post

表单常见的两种方式有get和post

get:以明文的方式通过URL提交数据,数据在URL中可见,提交的数据最多不超过2KB。其安全性较低,但是效率比POST要高,适合提交数据量不大,安全性不高的数据,例如搜索、查询等功能

post:将用户提交的数据封装在HTML Header中。适合提交数据量大,安全性高的用户信息。比如注册、修改等功能

请求重定向与请求转发

-

-

代码示例

说明

请求重定向

客户端行为

response.sendRedirect()

本质上相当于两次请求,前一次请求对象不会保存,地址栏的URL会改变

请求转发

服务器行为

request.getRequestDispatcher().forward(req,resp)

只是一次请求,转发后请求对象会保存,地址栏的URL不会改变

session

session表示客户端与服务器的一次会话,其存在的时间是从进入网站到浏览器关闭这段时间

session会保存在服务器内存中,而且用户与session一一对应,不同的用户对应的session不同。当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要session对象

从一个客户打开浏览器并连接服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。

有些页面也设置有过期时间,一旦长时间离开页面,会话也可能被关闭

linux jsp 编译报错,JSP简要介绍相关推荐

  1. firefly AIO-RK3399J Linux SDK编译报错解决

    Firefly AIO-RK3399J Linux SDK编译报错解决 Zhang-Zhen 2020-09-30 22:01:04  收藏 分类专栏: RK3399工作记录 文章标签: linux  ...

  2. linux make编译报错 mv,Linux下安装redis

    1:首先下载redis  http://redis.io/download 2:  需要Linux安装gcc依赖 3:进行解压 tar -zxvf redis-3.0.0-rc2.tar.gz 4:进 ...

  3. Linux驱动模块编译报错 ‘init_module‘ specifies less restrictive attribute than its target

    在学习写Linux模块驱动的时候写了个demo,分别在自己的电脑和RockPi4B上分别尝试运行,在自己电脑上能顺利运行,但是在RockPi4B上编译时却发生如下报错 编译报错 include/lin ...

  4. linux c 编译报错 Compile error : undefined reference to‘__atomic_fetch_add_4’ 解决方法

    代码如下: #include <opencv2/opencv.hpp> using namespace cv;int main() {Mat img=imread("cornea ...

  5. linux下编译报错:gcc: Syntax error: Unterminated quoted string

    本来可以编译的代码,换一个编译环境就边不过了. 报错:gcc: Syntax error: Unterminated quoted string 原因:工具链基于 bash写的,在 dash 下运行脚 ...

  6. Linux 驱动编译报错:error: macro __DATE__ might prevent reproducible builds [-Werror=date-time]

    编译驱动时遇到这个错误提示,表示当前编译环境中将关于 DATE 以及 TIME 的警告也作为错误来进行处理的.有如下几种方法可以参考: 1. 在编译驱动的相应 Makefile 中增加一行:CFLAG ...

  7. Linux ndk编译 报错 bits/c++configure.h is not found

    1. 更新系统 apt-get update apt-get upgrade 2.ndk 的application.mk配置ndk带的lib,不然系统会默认搜索/usr/include/c++/bit ...

  8. jsp 学习笔记( java编译报错:程序包 javax.servlet和javax.servlet.http 不存在)

    最近学习javaEE这门课程,老师要求不用集成开发环境只用 tomcat (服务器).java 和 浏览器 实现jsp过程,要编译的java文件如下 import javax.servlet.*; i ...

  9. [Linux Audio Driver] 移植外部CODEC常见编译报错解决(持续更新)

    0. 背景 最近一直在调试codec芯片,好多代码FAE给的和平台不适配,比如结构体改了之类的,一些编译问题老是忘记,就想着顺手写下总结. 1. function definition is not ...

最新文章

  1. python 没反应 生成exe_通过 pyinstaller 将 python 脚本打包成可执行程序!
  2. GNSS NMEA ddmm.mmmmm格式转换
  3. java的mock测试框架
  4. [数分提高]2014-2015-2第9教学周第1次课 (2015-04-28)
  5. 【Python3爬虫】为什么你的博客没人看呢?
  6. 27.用zxing生成二维码
  7. ssrf漏洞 php,DokuWiki fetch.php SSRF漏洞与tok安全验证绕过分析
  8. Java面试 - HashMap的底层实现,之后会问ConcurrentHashMap的底层实现
  9. 昨晚停网后,我写了一段Python代码破解了隔壁小姐姐的wifi密码
  10. 二十一.激光、视觉和惯导LVIO-SLAM框架学习之相机与雷达外参标定(1)
  11. hive学习07-常见的优化
  12. 美团刚做起网约车,滴滴就送外卖?你们倒真是相爱相杀
  13. 【浙江大学PAT真题练习乙级】1008 数组元素循环右移问题 (20分)真题解析
  14. python:执行一个命令行N次
  15. 教育部:新一轮“双一流”,不搞平衡照顾!
  16. js 字符串常用方法 切割 搜索 验证 替换
  17. 如何看误差累积分布图
  18. 前端RSA加密,加密字符串过长,提示“Message too long for RSA”问题
  19. MySQL数据库期末考试试题及参考答案(01)
  20. 小波变换比傅里叶变换好在哪里_小波变换与傅里叶变换详解——代码下载——非平稳信号与平稳信号的滤波效果对比

热门文章

  1. 维基百科,自由的百科全书 正则表达式
  2. http://archive.ubuntu.com/ubuntu xenial/main amd64 tmux amd64 2.1-3build1 403 Forbidden
  3. server包+SakuraFrp实现我的世界开服
  4. ODB学习笔记之基础环境搭建
  5. 学生网站模板HTML5+CSS大作业——明星薛之谦(7页面))带轮播特效
  6. 【程序12】模拟掷骰子游戏
  7. 4万字总结,关于数据仓库与数据湖
  8. Unity3D 粒子系统实现一个简单的爆炸效果
  9. QCC51XX---BLE广播
  10. 当前安全设置不允许下载该文件 完美解决方案