JSP
2020-12-11 16:38:52 1 举报
AI智能生成
jsp基础
作者其他创作
大纲/内容
JSP
3、Servlet
1、Servlet的概述
1.servlet的定义与作用
定义:Servlet是Java Web开发中的一种Web组件
作用:Servlet能够对来自客户端浏览器的各种请求做出相应的响应, 并向客户端浏览器返回结果页面。(处理客户端请求与响应。)
2.创建servlet的步骤
①方法一:通过注解完成servlet的映射
第一步:继承HttpServlet类;
第二步:重写服务方法;重写doget()、dopost()方法
第三步:配制web.xml文件;
例如:<!-- servlet:映射servlet类文件 -->\t<servlet>\t\t<servlet-class>包名.类名</servlet-class>\t\t<servlet-name>映射的名称</servlet-name>\t</servlet> <!-- mapping:映射请求路径的名称 -->\t<servlet-mapping>\t\t<servlet-name>映射的名称</servlet-name>\t\t<url-pattern>/请求url名称</url-pattern>\t</servlet-mapping> 说明:url名称与映射的名称与类名相同。
②方法二:通过注解完成servlet的映射
第一二步相同,如上:
第三步:@WebServlet — 配置访问路径
name:指定 Servlet 的 name 属性,等价于 <servlet-name>。 如果没有显式指定,则该 Servlet 的取值即为类的全限定名。 value和urlPatterns:指定一组 Servlet 的 URL 匹配模式。 等价于 <url-pattern> 标签。 value与urlPatterns只能用一个。 loadOnStartup:指定 Servlet 的加载顺序。 如果为负数,表示,请求时才加载servlet类; 如果为正数,表示,服务启动时,加载servlet类; asyncSupported:声明 Servlet 是否支持异步操作模式 description:该 Servlet 的描述信息 initParams:指定一组 Servlet 初始化参数,要与@WebInitParam配合使用。
2、Servlet生命周期
①实例化:调用构造方法,Servlet由容器自动加载并实例化,我们不能实例化。
②初始化:调用init(ServletConfig config),完成初始化操作。
③服务:调用service、doGet、doPost方法,反复调用。
④销毁:调用destroy()方法,服务器正常关闭或超时。
3、Servlet与JSP
①:Servlet与JSP关系
都是Web组件
JSP运行前将先转译成Servlet
②:使用场景
JSP侧重于页面展示,方便视图层的页面设计,适用于美工方面的工作
Servlet侧重于处理用户请求,适用于代码方面的工作
③:Servlet是JSP的另一种存在形式
JSP能做的,Servlet都能做
JSP以网页的形式存在,而Servlet以Java类的形式存在
JSP转译后就是Servlet
4、Servlet文件上传
1、概念:
本地文件传送到服务器(web服务器)
2、具体实现步骤
第一步:创建表单:
设置表单类型enctype="multipart/form-data";
设置method提交方式为post;
设置type为file表单元素
第二步:创建servlet:
设置servlet为可处理上传文件的 @MultipartConfig
获取表单的file对象 Part p=request.getPart("myfile");
获取上传文件的名称String name=p.getSubmittedFileName();
通过write方法,将文件上传到指定位置p.write("d://"+name);
//上传到服务器指定位置//request.getServletContext()获取上下文对象,//getRealPath()获取服务器的路径String path=request.getServletContext().getRealPath("");p.write(path+"/images/"+n+x);
3.写上传代码(以下是单个文件上传)
// 获取表单中所有的表单元素对象【含file和text、password等】Collection<Part> ps = request.getParts();for (Part p : ps) {\t// 判断当前的part对象是否为文件域对象\tif (p.getContentType() != null) {\t\t// 获取上传文件的名称\t\tString name = p.getSubmittedFileName();\t\t// 取原文件的文件名\t\tString x = name.substring(name.indexOf("."));\t\t// 自动产生随机的名称\t\tString n = UUID.randomUUID().toString();\t\t\t\t\t\t//上传到服务器指定位置\t\tString path=request.getServletContext().getRealPath("");\t\tp.write(path+"/images/"+n+x);\t}}
5、jsp的一些应用
1.点击量的统计
B:application.getAttribute(String Key);读取该变量的方法
C:在页面每次被访问时,你可以读取计数器的当前值,并递增1,然后重新设置,在下一个用户访问时就将新的值显示在页面上。
2.自动刷新
3.发送邮件
6、jsp的高级语法
1.Jstl标准标签库
核心标签
(1)核心标签是最常用的JSTL标签。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
(2)引用核心标签库的语法如下:
(1)<c:out> 用于在JSP中显示数据,就像<%= ... >
(2)<c:set> \t用于保存数据
(3)<c:remove> 删除数据
(4)<c:catch> 用来处理产生错误的异常状况,并且将错误信息储存起来
(5)<c:if> 与我们在一般程序中用的if一样
(6)<c:choose> 本身只当做<c:when>和<c:otherwise>的父标签 <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
(7)<c:import> 检索一个绝对或相对 URL,然后将其内容暴露给页面
(8)<c:foreach> 基础迭代标签,接受多种集合类型
1、语法格式:<c:forEach items="<object>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>">
2、属性值: items 要被循环的信息 begin 开始的元素(0=第一个元素,1=第二个元素) end 最后一个元素(0=第一个元素,1=第二个元素) step 每一次迭代的步长 var 代表当前条目的变量名称\t varStatus 代表循环状态的变量名称
(9) <c:Fortokens> 根据指定的分隔符来分隔内容并迭代输出
(10)<c:redirect> \t重定向至一个新的URL.
1、作用:通过自动重写URL来将浏览器重定向至一个新的URL,它提供内容相关的URL,并且支持c:param标签。
2、语法格式:<c:redirect url="<string>" context="<string>"/> url \t目标URL context \t紧接着一个本地网络应用程序的名称(可省略)
(11)\t<c:url> 使用可选的查询参数来创造一个URL
(12) <c:param> 用来给包含或重定向的页面传递参数
②格式化标签
(1)JSTL格式化标签用来格式化并输出文本、日期、时间、数字。
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
(2)引用格式化标签库的语法如下:
(1)<fmt:formatNumber> 使用指定的格式或精度格式化数字
(2)<fmt:parseNumber> \t解析一个代表着数字,货币或百分比的字符串
(3)<fmt:formatDate>\t使用指定的风格或模式格式化日期和时间
(4) <fmt:parseDate> \t解析一个代表着日期或时间的字符串
(5) <fmt: bundle > /<fmt:setBundle> 绑定资源
(6) <fmt:setLocal> 指定地区
(7) <fmt:timeZone>/<fmt:setTimeZone> 指定时区
(8) <fmt:message> \t显示资源配置文件信息
1、作用:映射一个关键字给局部消息,然后执行参数替换。
2、语法格式<fmt:message key="<string>" bundle="<string>" var="<string>" scope="<string>"/>
3、属性值:key 要检索的消息关键字 bundle 要使用的资源束 var 存储局部消息的变量名 scope var属性的作用域
(9) <fmt:requestEncoding> \t设置request的字符编码
语法格式<fmt:requestEncoding value="<string>"/>
③SQL标签
(1)JSTL SQL标签库提供了与关系型数据库(Oracle,MySQL,SQL Server等等)进行交互的标签。
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
(1)引用SQL标签库的语法如下:
(1)<sql:setDataSource> 指定数据源
语法格式<sql:setDataSource var="<string>" scope="<string>" dataSource="<string>" driver="<string>" url="<string>" user="<string>" password="<string>"/>
(2)<sql:query> 运行SQL查询语句
(3)<sql:update> \t运行SQL更新语句
(4)<sql:param> \t将SQL语句中的参数设为指定值
(5)<sql:dateParam> 将SQL语句中的日期参数设为指定的java.util.Date 对象值
(6)<sql:transaction> 在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行可以将大量的<sql:query>和<sql:update>操作装入<sql:transaction>中,使它们成为单一的事务。
④XML 标签
(1)JSTL XML标签库提供了创建和操作XML文档的标签。
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
(2)引用XML标签库的语法如下:
1.语法格式<x:out select="<string>" escapeXml="<true|false>"/>
2.具体实例:<x:parse xml="${xmltext}" var="output"/><b>The title of the first book is</b>: <x:out select="$output/books/book[1]/name" /><br><b>The price of the second book</b>: <x:out select="$output/books/book[2]/price" />
(2)<x:parse> 解析 XML 数据
语法格式<x:parse var="<string>" varDom="<string>" scope="<string>" scopeDom="<string>" doc="<string>" systemId="<string>" filter="<string>"/>
(3)<x:set> 设置XPath表达式
语法格式<x:set var="<string>" select="<string>" scope="<string>"/>
(4)<x:if> 判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体
(5) <x:forEach> 迭代XML文档中的节点
(6)<x:choose> <x:when>和<x:otherwise>的父标签
(7) <x:when> <x:choose>的子标签,用来进行条件判断
(8)<x:otherwise> <x:choose>的子标签,当<x:when>判断为false时被执行
(9) <x:transform> 将XSL转换应用在XML文档中
(10)<x:param> 与<x:transform>共同使用,用于设置XSL样式表
⑤JSTL函数
(1)JSTL包含一系列标准函数,大部分是通用的字符串处理函数。
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
(2)引用JSTL函数库的语法如下:
(1)fn:contains() /fn:containsIgnoreCase() 测试输入的字符串是否包含指定的子串/测试输入的字符串是否包含指定的子串,大小写不敏感
(2) fn:startsWith()/fn:endWith() 测试输入字符串是否以指定的前缀开始/测试输入的字符串是否以指定的后缀结尾
(3)fn:escapeXml() 跳过可以作为XML标记的字符
(4) fn:indexOf() 返回指定字符串在输入字符串中出现的位置
(5)fn:join() 将数组中的元素合成一个字符串然后输出
(6)fn:length() 返回字符串长度
(7)fn:replace() 将输入字符串中指定的位置替换为指定的字符串然后返回
(8) fn:substring()/fn:substringAfter()/fn:substringBefore() 返回字符串的子集/返回字符串在指定子串之后的子集/返回字符串在指定子串之前的子集
(9) fn:toLowerCase()/fn:toUpperCase() 将字符串中的字符转为小写/将字符串中的字符转为大写
(10)fn:trim() 移除首位的空白符
1、动态网页基础
JSP的概述
2.组成
html【显示静态内容】+java【实现服务器动态数据交换】
3.静态网页与动态网页的区别
①静态网页:由html语言实现,任何人在任何时间、地点访问静态网页,页面不会发生改变。
②动态网页:由html+java或c#语言,任何人在任何时间、地点访问动态网页,页面内容不会相同。
JSP的工作原理
第一步:客户端发送请求
第二步:服务器接收请求后,jsp引擎将jsp翻译成java文件,JVM会将java文件编译成class文件,最后运行class生成HTML静态内容(含JS)
响应HTML静态内容(含JS)给客户端
Tomcat服务器和JavaEE的使用
1.认识Tomcat服务器的构造
bin:服务命令目录,用于启动和停止服务器;conf:服务器配制文件目录;lib:服务器的类库包文件目录;logs:服务器的日志文件目录;temp:临时文件目录;webapps:工程发布后的目录;
2.Eclipse的进一步的了解
①工具与服务器绑定
②创建web工程
③创建一个JSP文件
④发布工程
⑤启动服务
jsp的语法
1.html
静态内容
2.@page指令
①定义:定义动态语言、指定字符集[静态和动态]、导包【写在页面第一行】
3.代码段
①说明:java代码段就是java语言编写的代码,以分号结束。
②语法:<% java代码段(java小脚本) %>
4.表达式
①作用:用于输出内容(替换out.print()) 注意:表达式后面不能有任何的符号
②语法:<%=表达式 %>
5.声明
①:定义方法或全局变量
②语法:<%! \t public 返回值类型 方法名(形参){\t\t代码;\t\treturn 返回值; } %>
6.注释
1.静态注释
<!--静态注释:客户端可以看到 -->
2.动态注释
<%--动态注释:服务器可见 --%>
2、隐藏对象和作用域
1.9大隐式对象
①隐式对象的定义:不用通过类去创建对象,由服务器自动创建的对象。
②jsp中9个隐式对象
request:得到客户端的信息response:处理服务器端对客户端的一些响应session:保存单个用户访问时的一些信息application:用来保存网站的一些全局变量pageContext:提供了访问和放置页面中共享数据的方式out:功能是把信息回送到客户端的浏览器中config:配置对象page:JSP页面中的Object对象exception:异常对象
2.request对象:请求对象
①作用:用于封装客户端数据请求给服务器。
②request对象的方法:
方法一:request.setCharacterEncoding("utf-8");对客户端浏览器发送过来的请求参数编码,防止中文乱码
方法二:getParameter(String name)获得客户端传送给服务器端的有name指定的参数值
方法三:getParameterValues()获得客户端传送给服务器端的所有参数的名字,结果是一个String数组类型【一般用于获取复选项的值】
3.response对象:响应对象
①作用:用于封装服务器数据响应给客户端
②response对象响应类型:
静态文本类型:response.setContentType("text/html;charset=utf-8");
图片类型:response.setContentType("image/png");
js脚本类型:response.setContentType("text/javascript");
③response提供的方法:
void addCookie(Cookie cookie)增加Cookie对象
void sendRedirect(String location)页面跳转重定向
void setcontenttype(String Type)设置服务端响应编码
4.重定向与转发的区别
1.转发
地址栏:不改变 是否保留第一次请求数据:保留 请求次数:1 跳转发生的位置:服务端。
2.重定向
地址栏:改变 是否保留第一次请求数据:不保留 请求次数:2 跳转发生的位置:客户端发出的第二次跳转
4、Cookie与Session
1.了解http协议
一种无状态协议,发送请求后浏览器创建与服务器的连接,返回后结果连接断开,无法保存用户的状态,所以,服务器无法识别是新用户还是老用户。
①.通过Cookie在客户端记录信息确定用户身份
②.通过Session在服务器端记录信息确定用户身份
2.cookie的使用
①.定义:
存储在客户机的文本文件,它们保存了大量轨迹信息。
②.三个步骤来识别回头客:
A:服务器脚本发送一系列cookies至浏览器。比如名字,年龄,ID号码等等。
B:浏览器在本地机中存储这些信息,以备不时之需。
C:当下一次浏览器发送任何请求至服务器时,它会同时将这些cookies信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情。
③.使用JSP设置cookie包含三个步骤:
(2)设置有效期:调用setMaxAge()函数表明cookie在多长时间(以秒为单位)内有效。下面的操作将有效期设为了24小时。cookie.setMaxAge(60*60*24);
(3) 将cookie发送至HTTP响应头中:调用response.addCookie()函数来向HTTP响应头中添加cookies。response.addCookie(cookie);
④cookie的主要的方法:
(1)public void setDomain(String pattern)设置cookie的域名,比如www.baidu.com
(2)public String getDomain()获取cookie的域名,比如www.baidu.com
(3)public void setMaxAge(int expiry)设置cookie有效期,以秒为单位,默认有效期为当前session的存活时间
(4)public int getMaxAge()获取cookie有效期,以秒为单位,默认为-1 ,表明cookie会活到浏览器关闭为止
(5)public String getName()返回 cookie的名称,名称创建后将不能被修改
(6)public void setValue(String newValue)设置 cookie的值
(7)public void setPath(String uri)设置cookie 的路径,默认为当前页面目录下的所有URL,还有此目录下的所有子目录
(8)public void setSecure(boolean flag)指明cookie是否要加密传输
(9)public void setComment(String purpose)设置注释描述 cookie的目的。当浏览器将cookie展现给用户时,注释将会变得非常有用
⑤.删除Cookies
1、获取一个已经存在的cookie然后存储在Cookie对象中。2、将cookie的有效期设置为0。3、将这个cookie重新添加进响应头中。
3.session的使用
①定义:
是保存在服务器端的数据,用于验证几次请求是否属于同一会话,在同一会话中,会避免进行不必要的验证,保证用户的操作连贯性。
②session的主要方法:
(1)public Object getAttribute(String name)返回session对象中与指定名称绑定的对象,如果不存在则返回null
(2)public Enumeration getAttributeNames()返回session对象中所有的对象名称
(3)public long getCreationTime()返回session对象被创建的时间, 以毫秒为单位,从1970年1月1号凌晨开始算起
(4)public String getId()返回session对象的ID
(5)public long getLastAccessedTime()返回客户端最后访问的时间,以毫秒为单位,从1970年1月1号凌晨开始算起
(6)public int getMaxInactiveInterval()返回最大时间间隔,以秒为单位,servlet 容器将会在这段时间内保持会话打开
(7)public void invalidate()将session无效化,解绑任何与该session绑定的对象
(8)public boolean isNew(返回是否为一个新的客户端,或者客户端是否拒绝加入session
(9)public void removeAttribute(String name)移除session中指定名称的对象
(11)public void setMaxInactiveInterval(int interval)用来指定时间,以秒为单位,servlet容器将会在这段时间内保持会话有效
③删除Session数据
(1) 移除一个特定的属性:调用public void removeAttribute(String name) 方法来移除指定的属性。
(2)删除整个会话:调用public void invalidate() 方法来使整个session无效。
(3)设置会话有效期:调用 public void setMaxInactiveInterval(int interval) 方法来设置session超时。
(4)登出用户:支持servlet2.4版本的服务器,可以调用 logout()方法来登出用户,并且使所有相关的session无效。
(5)置web.xml文件:如果使用的是Tomcat,可以向下面这样配置web.xml文件: <session-config> <session-timeout>15</session-timeout> </session-config>
0 条评论
回复 删除
下一页