JSP (Java Server Pages)
JSP 与 PHP、ASP、ASP.NET 等语言类似,运行在服务端的语言。
JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTML、XML 或其他格式文档的Web网页的技术标准。
JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。
JSP开发的WEB应用可以跨平台使用,既可以运行在 Linux 上也能运行在 Windows 上。
程序架构
C/S架构程序:(客户端+服务器)
需要安装,成本相对高;客户端有一定数据处理能力;
B/S架构程序:(浏览器+服务器)
低成本,无需安装;服务器处理数据,压力较大;部署更快
采用请求/响应模式进行交互
JSP 生命周期
理解JSP底层功能的关键就是去理解它们所遵守的生命周期。
JSP生命周期就是从创建到销毁的整个过程,类似于servlet生命周期,区别在于JSP生命周期还包括将JSP文件编译成servlet。
以下是JSP生命周期中所走过的几个阶段:
-
编译阶段:
servlet容器编译servlet源文件,生成servlet类
-
初始化阶段:
加载与JSP对应的servlet类,创建其实例,并调用它的初始化方法
-
执行阶段:
调用与JSP对应的servlet实例的服务方法
-
销毁阶段:
调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例
JSP HTTP 状态码
http:无状态协议
url:计算机通过统一资源定位符实现资源访问
状态码 | 消息 | 描述 |
---|---|---|
100 | Continue | 只有一部分请求被服务器接收,但只要没被服务器拒绝,客户端就会延续这个请求 |
101 | Switching Protocols | 服务器交换机协议 |
200 | OK | 请求被确认 |
201 | Created | 请求时完整的,新的资源被创建 |
202 | Accepted | 请求被接受,但未处理完 |
203 | Non-authoritative Information | |
204 | No Content | |
205 | Reset Content | |
206 | Partial Content | |
300 | Multiple Choices | 一个超链接表,用户可以选择一个超链接并访问,最大支持5个超链接 |
301 | Moved Permanently | 被请求的页面已经移动到了新的URL下 |
302 | Found | 被请求的页面暂时性地移动到了新的URL下 |
303 | See Other | 被请求的页面可以在一个不同的URL下找到 |
304 | Not Modified | |
305 | Use Proxy | |
306 | Unused | 已经不再使用此状态码,但状态码被保留 |
307 | Temporary Redirect | 被请求的页面暂时性地移动到了新的URL下 |
400 | Bad Request | 服务器无法识别请求 |
401 | Unauthorized | 被请求的页面需要用户名和密码 |
402 | Payment Required | 目前还不能使用此状态码 |
403 | Forbidden | 禁止访问所请求的页面 |
404 | Not Found | 服务器无法找到所请求的页面 |
405 | Method Not Allowed | 请求中所指定的方法不被允许 |
406 | Not Acceptable | 服务器只能创建一个客户端无法接受的响应 |
407 | Proxy Authentication Required | 在请求被服务前必须认证一个代理服务器 |
408 | Request Timeout | 请求时间超过了服务器所能等待的时间,连接被断开 |
409 | Conflict | 请求有矛盾的地方 |
410 | Gone | 被请求的页面不再可用 |
411 | Length Required | "Content-Length"没有被定义,服务器拒绝接受请求 |
412 | Precondition Failed | 请求的前提条件被服务器评估为false |
413 | Request Entity Too Large | 因为请求的实体太大,服务器拒绝接受请求 |
414 | Request-url Too Long | 服务器拒绝接受请求,因为URL太长。多出现在把"POST"请求转换为"GET"请求时所附带的大量查询信息 |
415 | Unsupported Media Type | 服务器拒绝接受请求,因为媒体类型不被支持 |
417 | Expectation Failed | |
500 | Internal Server Error | 请求不完整,服务器遇见了出乎意料的状况 |
501 | Not Implemented | 请求不完整,服务器不提供所需要的功能 |
502 | Bad Gateway | 请求不完整,服务器从上游服务器接受了一个无效的响应 |
503 | Service Unavailable | 请求不完整,服务器暂时重启或关闭 |
504 | Gateway Timeout | 网关超时 |
505 | HTTP Version Not Supported | 服务器不支持所指定的HTTP版本 |
使用Tomcat部署Web项目
Web 应⽤服务器:Tomcat、Jboos、Weblogic、Jettyn、WebSphere、Nginx、IIS、Apache
Apache(Web服务器,接收web请求,不做应用处理,等价于Nginx) 、
Tomcat(可以做应用处理,执行java程序)
Tomcat服务器特点
Apache Jakarta的开源项目
轻量级应用服务器
开源、稳定、资源占用小
安装 Tomcat:
1、官⽹下载压缩⽂件。
https://tomcat.apache.org/download-90.cgi
2、解压缩。
-
bin:存放各个平台下启动和停⽌ Tomcat 服务的脚本⽂件。其中, .sh支持Linux平台,.bat支持Windows平台。startup.bat启动,shutdown.bat停止
-
conf:存放各种 Tomcat 服务器的配置⽂件。通过server.xml修改端口号,tomcat-user.xml可修改用户名和密码。
-
lib:存放 Tomcat 服务器所需要的 jar。
-
logs:存放 Tomcar 服务运⾏的⽇志。
-
temp:Tomcat 运⾏时的临时⽂件。
-
webapps:存放允许客户端访问的资源(Java 程序),当发布Web应用时,默认情况下会将Web应用的文件存放于此目录中。
-
work:存放 Tomcat 将 JSP 转换之后的 Servlet ⽂件。
配置过程
默认端口号:8080
访问http://127.0.0.1:8080/…查看Tomcat主页
**注意:**startup.bat启动Tomcat出现一闪而过现象是因为JAVA_HOME没有配置。
Eclipse下配置Tomcat环境:
window–>首选项–>Server–>运行环境–>点击Add–>选择对应版本–>应用和关闭–>建立web工程–>双击Server–>Server Locations选择Tomcat Installation、Deploy path改为webapps
jsp
本质是Servlet------java组件,接收请求,做出响应 生成类
常见动态网页技术:JSP,PHP,ASP,CGI
当有人请求JSP时,服务器内部会经历一次动态资源(JSP)到静态资源(HTML)的转化,服务器会自动帮我们把JSP中的HTML片段和数据拼接成静态资源响应给浏览器。也就是说JSP是运行在服务器端,但最终发给客户端的都已经是转换好的HTML静态页面(在响应体里)。
七种元素:
HTML元素
指令:page、include、taglib <% @page %>
注释:<%--JSP注释--%>
JSP注释,注释内容不会被发送至浏览器甚至不会被编译
<!--HTML注释-->
HTML注释,通过浏览器查看网页源代码时可以看见注释内容
JSP脚本中注释:<%//单行注释%>、 <%/*多行注释*/%>
表达式:<%= 表达式 %>
小脚本:<% java语句; %>
,生成到Servlet类的方法中
声明:<%! 属性和方法的声明 %>
使用<%%>声明局部变量、使用<%!%>声明全局变量
动作:<jsp:useBean> </jsp:useBean>
,不常用
显示输出:
out.println(); 响应到客户端
System.out.println(); 服务器端控制台
指令包含(静态)和动作包含(动态):
把网页中公共部分提取单独写,方便维护
指令包含:<%@include file ="..." %>
动作包含:<jsp:include page="..."></jsp:include>
<!--注意:使用包含时,删除<html><bydy>等部分,只保留相关语句-->
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" %>
<div id="head">
<a href="index.jsp">首页</a> | <a href="count.jsp">访问数统计</a> | <a href="action.jsp">动作</a>
</div>
指令包含(静态)和动作包含(动态)区别?***
在一个文件中使用静态包含,本文件与被包含文件先合并,然后转译、编译。
在一个文件中使用动态包含,本文件与被包含文件分别转译、编译,然后调用被包含文件的class文件。
JSP运行过程:
.jsp文件转译生成.java文件编译生成.class加载运行
jsp内置对象:
pageContext PageContext 当前页面共享数据,还可以获取其他八个内置对象
request HttpServletRequest 一次请求访问的多个资源(转发)
session HttpSession 一次会话的多个请求间
application ServletContext 所有用户间共享数据
response HttpServletResponse 响应对象
page Object 当前页面(Servlet)的对象 this
out JspWriter 输出对象,数据输出到页面上
config ServletConfig Servlet的配置对象,获取web.xml的配置参数
exception Throwable 异常对象,默认不识别,只能用在错误页面
https://blog.csdn.net/qq_40587575/article/details/79810019
错误页面:需要在page指令中设置,errorPage="true"设置当前页面为错误页面。
只有设置了errorPage=“true” 才能使用exception对象。
out.print()与out.println()比较
浏览器页面只显示内容,换行需要加<br.>,换行体现在源码中
request常用方法:
String getRemoteAddr():返回客户端的IP地址
Enumeration getHeaderNames():返回所有HTTP头的名称集合
String getHeader(String name):返回name指定的信息头
Enumeration getAttributeNames():返回request对象的所有属性名称的集合
HttpSession getSession():返回request对应的session对象,如果没有,则创建一个
HttpSession getSession(boolean create):返回request对应的session对象,如果没有并且参数create为true,则返回一个新的session对象
Object getAttribute(String name):返回名称为name的属性值,如果不存在则返回null。
String getContentType():返回request主体的MIME类型,若未知则返回null
String getContextPath():返回request URI中指明的上下文路径
String getParameter(String name):返回此request中name指定的参数,若不存在则返回null
String getPathInfo():返回任何额外的与此request URL相关的路径
值,如果不存在则返回null。
String getContentType():返回request主体的MIME类型,若未知则返回null
String getContextPath():返回request URI中指明的上下文路径
String getParameter(String name):返回此request中name指定的参数,若不存在则返回null
String getPathInfo():返回任何额外的与此request URL相关的路径
四个作用域对象:pageContext、request、session、application。