jsp是动态网页之一,jsp全称:java server page Java服务页面
jsp = Java + html
<%@ %>--------------------jsp标签指令
html----------------------html语法
<% %>---------------------java脚本
<%= %>--------------------java表达式
<%! %>--------------------java方法声明区
------------------网页注释
<%-- --%>-----------------jsp注释
注:1、java脚本中不能定义方法
2、java表达式是把内容输出到浏览器中,java表达式不能写分号
3、网页注释在浏览器中能看到,jsp注释不会在浏览器中显示,比较安全
1、翻译过程 把jsp页面翻译成一个servlet Java类
2、编译过程 把java类编译成class
3、执行过程 JVM执行class文件,Tomcat输出到浏览器
jsp就是一个简单的servlet
servlet + jsp
1、servlet职责:设置字符编码、收集表单参数、调用业务逻辑、页面跳转。
2、jsp职责:呈现数据给浏览器
servlet跳转到jsp有两种方式:转发(forward)、重定向(redirect)
转发是web服务器请求的传递,用户发送request到servlet,servlet把处理好的结果转移到jsp
在jsp页面呈现内容,整个过程使用了一个request,浏览器地址是最初始的地址
转发代码:request.getRequestDispatcher("personList.jsp").forward(request, response);
重定向是web服务器根据请求的需要,重新发送新的请求,用户发送请求到servlet,servlet处理好
结果响应掉第一次请求,告知浏览器重新发送一个新的request到jsp页面,整个过程使用了俩个
request,浏览器地址是最后一次请求的地址,是jsp地址
重定向代码:response.sendRedirect("personList.jsp");
注: 转发与重定向不能同时使用
1、查询用forward
2、增删改用redirect
一个请求需要用到数据库,就用servlet地址
一个请求不需要用到数据库,就用jsp地址
1、转发是请求的传递,整个过程使用了一个request
重定向是结束第一次请求,告知浏览器发送新的请求,整个过程使用了俩个request
2、转发:浏览器地址是最初始的地址
重定向:浏览器地址是最后一次的地址
3、转发可以使用request、session、application对象传递参数,可以传递任何对象
重定向只能使用URL传递参数,只能传递字符串
4、转发会重复提交表单
重定向不会重复提交表单
5、转发只能在项目内部跳转
重定向可以跳转到项目外部
相同点:
jsp就是一个简易的servlet,都是用来处理用户请求
不同点:
jsp是一个动态网页,用来呈现数据到浏览器
servlet是一个java类,用来处理用户请求与业务逻辑
jsp侧重呈现
servlet侧重于业务逻辑实现
jsp九大内置对象
web服务器一般指的是网站服务,主要提供互联网信息浏览,目前的web服务器都是http协议。
URL = http://ip:port/location
http:// http协议
ip 服务器ip地址
port web服务器的软件端口
location 项目的资源目录
ip地址在网络中定位一台计算机
port:在计算机中定位一款软件,web的默认端口是80
1、jsp java Tomcat
2、asp c# IIS
3、php php Apache
bin 执行文件(开启/关闭)
conf 配置文件
lib tomcat相关jar包
logs 日志文件
temp 临时文件
webapps web项目存放目录
work web项目的工作空间(缓存)
1、修改Tomcat端口,默认是8080端口
在Tomcat的conf/server.xml文件中修改端口,代码如下:
protocol="HTTP/1.1" redirectPort="8443"/> 2、设置Tomcat字符编码 在Tomcat的conf/server.xml文件中设置字符编码,代码如下: port="8080" protocol="HTTP/1.1" redirectPort="8443"/> 3、清除Tomcat缓存 清空Tomcat目录下temp与work俩个文件夹下所有文件 4、启动与停止Tomcat 启动:双击bin/startup.bat 停止:双击bin/shutdown.bat src:存放java源文件 build:存放java编译后的文件,.class文件 webContent:存放前端代码,比如:html、css、js、jsp WEB-INF/lib:存放项目第三方jar包,比如:ojdbc6.jar 1、servlet java类 2、jsp 动态网页 servlet成为web容器,用来处理客户端请求,运行在服务器端 1、创建一个类继承HttpServlet 2、重写doGet与doPost方法 3、在web.xml中配置servlet信息 java应用程序入口是main方法 web应用程序入口是web.xml 1、设置request、response字符编码 2、收集表单参数 (request.getParameter("")) 3、调用业务逻辑(dao层方法) 4、响应请求 生命周期:什么时候创建,什么时候销毁。 servlet 生命周期:servlet什么时候创建,servlet什么时候销毁。 servlet的根接口:Servlet 1、执行构造方法实例化 2、执行init方法初始化 3、执行service方法处理请求 4、当Tomcat关闭时,执行destroy方法进行销毁 构造方法与init方法自始至终只执行一次,servlet对象是单实例,当Tomcat关闭时, destroy方法也是只执行一次,销毁一个对象 servlet对象是由Tomcat创建的,创建方式有两种,分别如下: 1、第一次访问时被实例化 默认方式 95% 在servlet标签中配置: 中间是一个大于或等于零的正整数,数值越小,优先级越高,如果数值相同按书写顺序 Servlet根接口处理请求的方法是servlet方法,在子类HttpServlet中重写了该方法, 并且把request与respons对象转成了带http协议的request与respons对象,并且调用了自身带有 http协议的service方法,在这个service方法中根据提交方式method 调用 -------》doGet(http协议,只能处理get请求) service方法(Servlet根接口)----->service(Http协议) -------》doPost(http协议,只能处理post请求) 内置对象不需要构造,直接使用,对象名是固定的,这样的对象jsp一共有九个 对象名 类型(类/接口) 描述 page java.lang.Object(类) 当前页面 pageContext javax.servlet.jsp.PageContext(类) 页面上下文内容 request javax.servlet.http.HttpServletRequest(接口) 用户请求 response javax.servlet.http.HttpServletResponse(接口) 响应请求 session javax.servlet.http.HttpSession(接口) 网页会话 application javax.servlet.ServletContext(接口) 当前应用(servlet上下文内容) config javax.servlet.ServletConfig(接口) 配置信息 out javax.servlet.jsp.JspWiter(类) 输出对象 exception java.lang.Throwable(类) 网页异常对象 重点掌握:pageContext、request、response、session、application pageContext 当前页面有效 request 一次请求有效 session 整个网页会话有效 application 整个应用有效 以上四个域对象都有三个方法,分别如下: setAttribute(key,value); 把对象设置到范围中 getAttribtte(key) 从范围中获取对象 removeAttribute(key) 从范围中删除对象 pageContext对象代表网页的上下文内容,是九大内置对象最基础的对象,可以通过pageContext对象来 获取其他内置对象 pageContext对象获取 pageContext = _jspxFactory.getPageContext() 使用jsp工厂获取,如果要使用pageContext对象,请使用jsp。 pageContext对象常用方法: setAttribute(key,value); 把对象设置到范围中 getAttribtte(key) 从pageContext范围中获取对象 removeAttribute(key) 从pageContext范围中删除对象 getRequest() 获取request对象 getResponse() 获取response对象 getSession() 获取session对象 getServletContext() 获取application对象 getServletConfig() 获取config对象 getOut() out对象 getException() 获取exception对象 getPage() 获取page对象 request对象代表一个用户请求 request对象获取方法: HttpServletRequest request_ = (HttpServletRequest)pageContext.getRequest(); request对象常用方法: setCharacterEncoding("UTF-8"); 设置request字符编码 getCharacterEncoding("UTF-8"); 获取request字符编码 setAttribute(key,value); 把对象设置到范围中 getAttribtte(key) 从范围中获取对象 removeAttribute(key) 从范围中删除对象 getRequestDispatcher("URL").forward(request, response) 转发 getParameter("参数名") 获取表单参数 getParameterValues("参数名") 获取表单同名参数,比如:复选框 getServerName() 服务器端ip getServerPort() 服务器端口 getContextPath() 项目名、根路径 getRequestURI() 相对路径 getRequestURL() 绝对路径 getQueryString() 参数字符串 response对象代表响应请求 response对象获取方式: HttpServletResponse response_ = (HttpServletResponse)pageContext.getResponse(); response对象常用方法: setCharacterEncoding("UTF-8"); 设置response字符编码 getCharacterEncoding("UTF-8"); 获取response字符编码 setContentType("text/html;charset=UTF-8"); 设置网页类型与网页字符编码 sendRedirect("URL") 重定向 getWrite() 获取输出对象 注:转发、重定向、输出对象(out)不能同时使用,三者只能使用一个 在一个jsp页面嵌入另一个页面,嵌入方式有两种,分别如下: 1、静态嵌入 把jsp代码内容嵌入到另一个jsp中,一起编译产生一个servlet,上下文内容能关联, 称为:静态嵌入 代码: <%@ include file="jsp URL" %> 2、动态嵌入 嵌入的jsp与本身的jsp各自编译,产生两个servlet,上下文内容不能关联, 称为:动态嵌入 代码: 1、什么是session session是一次网页会话,浏览器与web服务器之间的一次会话,包含多次请求, 这就是网页会话 *****2、session的生命周期 创建: 浏览器第一次访问web服务器页面,产生一个session,一个用户对应一个session, 同一个浏览器,同一个网站,只会产生一个session 销毁: a、关闭浏览器,session对象并没有销毁,只是被闲置了,无人使用,超出session时长, 就会被销毁 b、超出session时长,也会被销毁,Tomcat默认session是30分钟 c、手动销毁session,代码session.invalidate() 3、session的作用 session是用来存储用户信息的,一个用户对应一个session,用户与用户之间不能共享session, 同一个浏览器,同一个网站,不能同时登录两个用户 4、设置session时长 a、设置Tomcat session时长,在Tomcat/conf/web.xml文件中修改session时长,代码如下 注:1、单位是分钟 2、会影响Tomcat下所有项目的session时长 b、设置项目的session时长,在项目web.xml中修改session时长,代码如下: c、设置功能的session时长,在功能代码中设置session时长,代码如下: session.setMaxInactiveInterval(30); 注:1、单位是秒 2、会影响单个功能的session时长 5、获取session对象方式 pageContext.getSession() 通过pageContext获取session对象 request.getSession() 通过request获取session对象 6、session常用方法 setAttribute(key,value) 1、什么是application对象 application对象相当于web应用程序的全局变量,在servlet或jsp中都能获取,一个web项目 只会产生一个application对象,application对象是单例的 2、application对象生命周期 创建: web服务器启动时创建application对象,一个web项目只会产生一个application对象 销毁: web服务器停止的时候销毁application对象,一个web项目销毁一个application对象 3、获取application对象 pageContext.getServletContext() 通过pageContext对象获取 request.getServletContext() 通过request对象获取 session.getServletContext() 通过session对象获取 4、常用方法 setAttribute(key,value) *****5、session与application的区别 a、范围不同 session是一次网页会话有效 application是整个应用程序有效 session是用户级别,一个用户对应一个session,用户与用户之间不能共享session application是应用级别,多个用户可以共享一个application b、生命周期不同 session:第一次访问web页面时,产生一个session,session销毁有三种方式: 关闭浏览器、超出时长、手动代码关闭 application:Tomcat启动时,产生一个application,Tomcat关闭时销毁一个 application对象 c、对象个数不同 session:一个会话产生一个session,多个网页会话,产生多个session application:一个web程序只能产生一个application对象 1、什么是config对象 config对象是servlet配置信息对象,可以获取servlet在web.xml中的配置信息 2、常用方法 getServletName() 获取web.xml中 getInitParameter(String name) 获取web.xml中 1、什么是cookie cookie是服务器端保存在客户端的一些文本文件,cookie信息存储在客户端,有一定的生命周期 生命周期一过,cookie就会失效 2、cookie的特点 a、cookie的文件都是文本文件,就是.txt b、cookie只能存储字符串 c、cookie文件大小不会超过4KB d、cookie文件有一定生命周期 e、cookie由浏览器管理 3、cookie的使用 a、创建cookie Cookie cookie = new Cookie("egg","teaegg"); b、设置生命周期,一般是7天,单位秒,不设置生命周期,关闭浏览器,cookie就失效 cookie.setMaxAge(7 * 24 * 60 * 60); c、写入浏览器 response.addCookie(cookie); d、获取cookie String value = ""; Cookie[] cookies = request.getCookies(); if(cookies != null){ for(Cookie cookie : cookies){ String name = cookie.getName(); if("egg".equals(name)){ value = cookie.getValue(); } } } *****4、cookie的优缺点 优点: a、cookie存储在客户端硬盘上,不会给服务器端造成压力 b、cookie是用来提高用户体验的 缺点: cookie存储在客户端的硬盘中,容易被删除、信息容易被泄露 *****5、cookie与session区别 a、session信息存储在服务器端的内存中 cookie信息存储在客户端硬盘中 b、session可以存储任何对象 cookie只能存储字符串 c、session关闭浏览器、超时、手动代码销毁,进行销毁 cookie是时间过期、浏览器清除进行销毁 d、session一般保存重要数据 cookie一般保存不重要数据,比如:记录用户名、浏览器地址 e、session是jsp九大内置对象 cookie不是jsp九大内置对象 Apache文件上传与下载 1、文件上传form表单注意事项 a、form表单提交方式必须是post,method="post" b、form表单类型一定是上传模式,enctype="multipart/form-data" c、input框type属性必须是file, 2、保存文件注意事项 a、文件保存在硬盘中,文件路径保存在数据库中 b、上传文件保存时,一定要重命名,否则会覆盖,一般使用用户名+时间作为文件名 c、数据库中储存文件路径、原文件名,因为下载时,要把原文件名还给原文件 1、提交记录的id到servlet,servlet获取参数id,是根据id到数据库中查询记录,把文件名与储存路径查询出来 2、调用downFile方法,第一个参数:文件存储路径,第二个参数:文件名,第三个参数:response UUID算法是一个32位16进制的字符串,保证唯一性,是线程安全的 使用: String code = UUID.randomUUID().toString(); get提交: 1、get提交会有长度限制 2、get提交会在浏览器中显示参数,不安全 3、浏览器会缓存get提交 4、get提交使用了一次TCP,效率高 post提交: 1、post提交不会有长度限制,文件上传必须使用post 2、post提交不会在浏览器中显示参数,安全 3、浏览器不会缓存post提交 4、post提交使用了两次TCP,效率低 注:a链接、form默认、js跳转、iframe、浏览器访问都是get提交 form method="post"是post提交 el表达式与jstl el表达式与jstl 1、什么是el表达式 el表达式全称:expression language 表达式语言 sun公司 作用:来取代jsp中的java代码,在jsp中不再使用<% %> 2、运行环境 el表达式是Tomcat4之后版本自带的,不需要导第三方的jar包,这个环境很早就有了 3、el表达式的语法 el表达式语法由$与{}组成,比如${表达式} el表达式获取对象属性,语法如下: a、${key.属性名 } b、${key['属性名'] } 注:其中的‘属性名’并不是类中的属性名,与类中的属性名无关,调用的是属性get方法, 首字母变大写,前面加get,然后去类中找get方法 属性名的前3个字母不要大写 4、el表达式的内置对象 a、域对象 对象 el表达式 描述 pageContext ${pageScope.key} 在pageContext范围中根据key值查询 request ${requestScope.key} 在request范围中根据key值查询 session ${sessionScope.key} 在session范围中根据key值查询 application ${applicationScope.key} 在application范围中根据key值查询 b、获取URL参数 ${param.参数名 } request.getParameter("参数名") ${paramValues.参数名 } request.getParameterValues("参数名") c、获取cookie值 ${cookie.key.name} 获取cookie的name属性 ${cookie.key.value} 获取cookie的value属性 d、pageContext对象(jsp最基础的内置对象) ${pageContext.request.requestURI } 获取当前相对路径 ${pageContext.request.contextPath } 获取项目名/根路径 e、empty对象(判断空) ${empty key} 判断key是否为空,如果为空返回true 不存在范围、空字符串、空集合、null都返回true ${!empty key} 取反 ${not empty key} 取反 el的内置对象有哪些 pageContextScope、 request Scope、sessionScope、applicationScope param、paramValues、empty、cookie、pageContext 5、el表达式转义符 == eq != ne < lt <= le > gt >= ge && and || or ! not 1、什么是jstl标签库 jstl全称:jsp standard tag library jsp标准标签库 sun公司推出 2、jstl标签库包含哪些 a、核心库 b、格式库 c、函数库 d、SQL库(从来不用) 3、运行环境 jstl需要导入第三方jar包,Tomcat没有自带jstl的jar包,jar包:jstl-1.2.jar 1、核心库的使用 引用标签库:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 标签语法: 作用:处理页面的业务逻辑,比如:if、for 2、常用标签 items 用于存放集合的key值 var 定义变量,集合中每个元素赋予此对象 varStatus 变量状态,可以用来做序号 i.index每行的下标,从零开始 i.count统计当前是第几行,从1开始 begin 循环开始位置 end 循环结束位置 step 下标的步长 1、格式化库的使用 引用标签库:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 标签语法: 作用:格式化时间与数字 2、常用标签 fmt:formatDate 格式化时间 fmt:formatNumber 格式化数字 1、函数的使用 引用标签库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 标签语法:${fn:函数名(参数) } 作用:调用函数获取相应结果,这些函数都是字符串函数 2、常用函数 fn:contains(string, substring) 如果参数string中包含参数substring,返回true fn:containsIgnoreCase(string, substring) 如果参数string中包含参数substring(忽略大小写),返回true fn:endsWith(string, suffix) 如果参数 string 以参数suffix结尾,返回true fn:escapeXml(string) 将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回 fn:indexOf(string, substring) 返回参数substring在参数string中第一次出现的位置 fn:join(array, separator) 将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。 fn:length(item) 返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。 fn:replace(string, before, after) 返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果 fn:split(string, separator) 返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素 fn:startsWith(string, prefix) 如果参数string以参数prefix开头,返回true fn:substring(string, begin, end) 返回参数string部分字符串, 从参数begin开始到参数end位置 fn:substringAfter(string, substring) 返回参数substring在参数string中后面的那一部分字符串 fn:substringBefore(string, substring) 返回参数substring在参数string中前面的那一部分字符串 fn:toLowerCase(string) 将参数string所有的字符变为小写,并将其返回 fn:toUpperCase(string) 将参数string所有的字符变为大写,并将其返回 fn:trim(string) 去除参数string 首尾的空格,并将其返回 ***** 六、jsp标签指令 1、<%@ page %> 用来设置网页信息,比如:字符编码、网页类型、导包 2、<%@ include %> jsp静态嵌入 3、<%@ taglib %> 在页面引入第三方标签库,比如:jstl servlet + jsp 1、servlet职责:设置字符编码、收集表单参数、调用业务逻辑、页面跳转。 2、jsp职责:呈现数据给浏览器 servlet跳转到jsp有两种方式:转发(forward)、重定向(redirect) 1、什么是转发 转发是web服务器请求的传递,用户发送request到servlet,servlet把处理好的结果转移到jsp 在jsp页面呈现内容,整个过程使用了一个request,浏览器地址是最初始的地址 转发代码:request.getRequestDispatcher("personList.jsp").forward(request, response); 2、什么是重定向 重定向是web服务器根据请求的需要,重新发送新的请求,用户发送请求到servlet,servlet处理好 结果响应掉第一次请求,告知浏览器重新发送一个新的request到jsp页面,整个过程使用了俩个 request,浏览器地址是最后一次请求的地址,是jsp地址 重定向代码:response.sendRedirect("personList.jsp"); 注: 转发与重定向不能同时使用 1、查询用forward 2、增删改用redirect 一个请求需要用到数据库,就用servlet地址 一个请求不需要用到数据库,就用jsp地址 1、转发是请求的传递,整个过程使用了一个request 重定向是结束第一次请求,告知浏览器发送新的请求,整个过程使用了俩个request 2、转发:浏览器地址是最初始的地址 重定向:浏览器地址是最后一次的地址 3、转发可以使用request、session、application对象传递参数,可以传递任何对象 重定向只能使用URL传递参数,只能传递字符串 4、转发会重复提交表单 重定向不会重复提交表单 5、转发只能在项目内部跳转 重定向可以跳转到项目外部 *****六、jsp与servlet区别 相同点: jsp就是一个简易的servlet,都是用来处理用户请求 不同点: jsp是一个动态网页,用来呈现数据到浏览器 servlet是一个java类,用来处理用户请求与业务逻辑 jsp侧重呈现 servlet侧重于业务逻辑实现 Filter(过滤器) servlet:处理用户的请求与响应 Filter:过滤请求、拦截请求 Listener:监听web对象,比如:request、session、application 1、创建一个类实现javax.servlet.Filter接口,重写接口中的抽象方法,一共三个方法分别如下: init() 初始化方法 doFilter() 拦截用户请求 destroy() 销毁方法 2、在项目web.xml中配置Filter信息 注:过滤路径使用通配符/* 能过滤到所有路径,包括:html、jsp、servlet、css、img、js 1、执行构造方法实例化 2、执行init方法初始化 3、执行doFilter方法拦截请求 4、当Tomcat关闭时,执行destroy方法进行销毁 Tomcat启动时就会启动构造方法和init方法,自始至终只会执行一次,Filter对象是单实例的, 当Tomcat关闭时,destroy方法也只会执行一次,销毁一个对象 访问优先级:Filter > Servlet 实例化优先级:Filter > Servlet Filter拦截只会拦截request请求,产生新的request对象就会被拦截一次,那么转发只会拦截一次, 重定向会拦截两次 1、设置全局的request、response的字符编码 2、登录拦截 3、权限拦截 Listener(监听器) Listener是web三大组件之一,用来监听request、session、application对象的创建、销毁、存储等动作, 监听器的根接口java.util.EventListener 1、对象的创建与销毁,对象包含:request、session、application ServletRequestListener 监听request对象创建与销毁 HttpSessionListener 监听session对象创建与销毁 ServletContextListener 监听application对象创建与销毁 2、对象存储值,对象包含:request、session、application ServletRequestAttributeListener 监听request对象存储值 HttpSessionAttributeListener 监听session对象存储值 ServletContextAttributeListener 监听application对象存储值 1、创建一个类实现监听接口,重写接口中的抽象方法 2、在web.xml中配置listener信息,代码如下: 访问优先级:Filter > Servlet 实例化优先级:Listener > Filter > Servlet 六、web项目的结构
七、java处理前端请求的方式
八、什么是servlet
九、servlet创建步骤
*十、web应用程序入口
*十一、servlet的职责
*十二、servlet生命周期
*十三、servlet实例化方式
十四、servlet处理请求的方法
一、什么是内置对象
*二、jsp九大内置对象
*三、jsp域对象
四、pageContext对象
*五、request对象
*六、response对象
*七、jsp嵌入jsp
一、session对象(网页会话)
二、application对象
三、什么是config对象
四、cookie
一、文件上传
二、文件下载
三、UUID算法
*四、提交方式get与post区别
*一、el表达式
二、jstl
*三、核心库
四、格式化库
五、函数库
*一、servlet与jsp职责
*二、servlet怎么跳转到jsp
三、什么时候用forward,什么时候用redirect
*四、URL什么时候使用servlet地址,什么时候用jsp地址
*五、forward与redirect
*一、web的三大组件
二、Filter创建步骤
*三、Filter生命周期
*四、Filter与Servlet优先级
*五、Filter拦截只认request
六、Filter作用
一、什么是Listener
二、监听器分类
三、Listener创建步骤
*四、Listener、Filter、Servlet优先级