linux jsp 编译报错,JSP简要介绍

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页面的生命周期

bV2Gr0?w=500&h=355

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对象

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值