\workspace\Tomcat"/>即可,path表示浏览器中输入的路径地址(/XXX,斜杠必须有),docBase为虚拟文件夹在本地的真实路径(里面必须有);
ØHTTP最常见的状态:
404,路径错误(4XX都是客户端请求错误);500,服务器错误(5XX都是程序错误);
Ø
listings
true(原为false)
修改后,访问虚拟目录时,将列出目录下的文件和文件夹信息;
Øindex.htm即首页,一旦输入虚拟目录之后,可直接调用此页面;
Øconf\web.xml中,最下边是默认的首页名称,index.htm,index.html,index.jsp;
Ø修改默认的首页,最好是单独修改各自的web.xml,在虚拟目录下的WEB-INF\web.xml中,加入由conf\web.xml复制来的:
(这里是首页名字)
ØJSP是嵌套在HTML中的,第一次访问时候,会自动编译,生成一个*.class文件,每当jsp文件改变时候,会生成新的*.java和*.class文件;
Øjsp必须有web容器支持,不能直接打开;
ØJSP注释:
显示注释(客户端可见):
—注释内容-->
隐式注释:
//、/*内容*/、<%--内容--%>(JSP注释);
ØScriptlet表示脚本小程序,有三种:
<%%>:
局部变量、语句;
<%!
%>:
方法、类、全局变量、全局常量;
<%=%>:
输出一个变量或一个具体内容;
Ø一般来说使用<%!
%>时,声明全局常量较多,一般不会去定义方法和定义类;
Ø使用out.println()输出,会将HTML和java代码混在一起,没有缩进,还得大量使用转义字符;
Ø<%=%>输出,可以使HTML和java代码相分离,所以尽量使用<%=%>输出;
Øscriptlet>
scriptlet>也是一种Scriptlet标签;
Øpage指令可定义一个JSP页面的相关属性,包括设置MIME类型、定义需要导入的包、错误页的指定等,语法:
<%@page属性="内容"%>;
Ø常用page属性:
contentType定义响应的MIME类型;import导包;pageEncoding指定字符编码;
Ø高版本的Tomcat可以自动编码,但未保证正常运行,一定要设置MIME类型;
Øconf\web.xml中,
htm
text/html
html
text/html
即为MIME类型映射表,text/html即为以html风格显示;
Øresponse.setHeader("Content-Disposition","attachement;filename=helloword.doc");可以更改该页面保存时候的默认文件名;
Ø如果希望一个JSP页面改变现实形式,就通过设置MIME类型完成;
ØcontentType="application/msword;charset=GBK"中,charset可以设置编码,也可以用pageEncoding来设置编码;
ØJSP中如果有pageEncoding,编码则由pageEncoding决定,如果没有pageEncoding,由contentType中charset决定,如果都没有,则默认iso-8859-1;
Ø常见的使用text/html风格显示的JSP,只需要指定一个pageEncoding即可;
Ø错误页功能(程序出错,跳转到一个提示页面)满足条件:
指定出现的跳转页,通过errorPage属性指定;
错误处理也必须有明确的标志,通过isErrorPage属性指定;
Ø正常情况下,可以跳转,但有时候也会出现无法跳转的问题,因为在跳转之后,有可能认为错误处理的页面也是一个出错的页面,所以应该在错误处理的页面设置response.setStatus(200);可以说明该处理页面正确;
Ø出错跳转时,地址栏上没有改变,但内容已经改变,这种不改变地址栏的跳转称为服务器端跳转;
Ø修改web.xml可以实现错误的集中处理,在最后增加类似如下代码即可:
404
/basic_page/error.jsp
java.lang.NullPointerException
/basic_page/error.jsp
加粗的出错后,跳转的页面;
(这种处理方式比较业余);
Øpage指令中,只有import能多次使用,其余只能出现一次;
ØJSP中,有两种包含操作:
静态包含和动态包含;
Ø静态包含:
语法<%@includefile="要包含的文件路径"%>,就是将内容进行了直接的替换;
Ø动态包含:
(可自动区分被包含页面是静态还是静态)
不传递参数:
includepage="{要包含的文件路径|<%=表达式%>}"flush="true|false"/>
传递参数
includepage="{要包含的文件路径|<%=表达式%>}"flush="true|false">
paramname="参数名"value="参数内容"/>
include>
使用request.getParameter("参数名"),可取得参数,使用value="<%=str%>"可传递变量;
Ø使用静态包含由于是代码替换,所以会出现重复定义变量的问题,动态包含先处理后包含,不会出现重复定义的问题;
Ø传递参数时候,参数个数不够,做为null处理;
Ø使用forward>可实现跳转,语法与include相类似;
Ø此种跳转属于服务器端跳转,即地址栏中地址不变化,仅页面变化;
ØJSP中9个内置对象:
内置对象
类型
描述
pageContext
javax.servlet.jsp.PageContext
JSP页面容器
request
javax.servlet.http.HttpServletRequest
得到用户的请求信息
response
javax.servlet.http.HttpServletResponse
服务器向客户端的回应信息
session
javax.servlet.http.HttpSession
用来保存每一个用户的信息
application
javax.servlet.ServletContext
表示所有用户的共享信息
config
javax.servlet.ServletConfig
服务器配置,可以取得初始化参数
out
javax.servlet.jsp.JspWriter
页面输出
page
java.lang.Object
表示从该页面中表示的一个Servlet实例
exception
java.lang.Throwable
表示JSP页面所发生的异常,在错误页中才起作用
Ø属性范围即一个对象可以在多少个页面中保存并继续使用;
Ø4种属性范围:
(属性保存的范围越小,服务器性能越高)
page:
只在一个页面中保存属性,跳转之后无效,通过pageContext对象完成;
request:
只在一次请求中保存,服务器跳转后依然有效;
session:
在一次会话范围中,无论何种跳转都可以使用,但是新开浏览器无法使用;
application:
在整个服务器上保存,所有用户都可以使用,新开浏览器有效;
Ø4个内置对象都存在以下方法:
publicvoidsetAttribute(Stringname,Objecto);
publicObjectgetAttribute(Stringname);
publicvoidremoveAttribute(Stringname);
Ø使用超链接,地址栏会改变,属于客户端跳转,无法传递request属性;
ØIE8之后,所有的进程全部共享一个session,只有进程全部结束,session效果才会消失;
Ø服务器重启后,application也将不起作用,必须重新设置;
ØpageContext重载了上述3个方法,可以直接设置作用范围(intscope),pageContext可操作4种范围:
APPLICATION_SCOPE、PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE;
Ørequest主要用在HTTP协议中;
Ørequest.setCharacterEncoding("utf-8");可设置传递的统一编码,解决乱码问题;
Ø使用publicString[]getParameterValues(Stringname)取得复选框中的参数;
Ø地址重写也可以传递参数:
(修改地址栏)
目标页面?
参数名称1=参数1&参数名称2=参数2&…,如:
request.jsp?
id=123&password=321
Øpost提交:
地址栏转向目标页面,不附加内容,只能用在表单上;
get提交:
地址栏转向目标页面,使用地址重写的方式传递参数,附加内容,受到地址栏长度限制,直接输入地址属于get提交方式;
Ø当前台表单不确定时,使用publicEnumerationgetParameterNames()取得所有参数名字,然后再取得对应的值;
Ø使用StringgetHeader(Stringname)、EnumerationgetHeaderNames()可取得头信息;
ØpublicStringgetContextPath(),取得上下文路径,有利于定位;
ØsetAttribute之后,只能通过getAttribute取得,不能通过getParameter取得;
Øresponse常用方法:
publicvoidaddCookie(Cookiecookie);(向客户端增加Cookie)
publicvoidsetHeader(Stringname,Stringvalue);(设置回应的头信息)
publicvoidsendRedirect(Stringlocation);(页面跳转,客户端跳转)
Ø使用forward>跳转:
属于服务器跳转,地址栏不改变,可传递request属性;属于无条件跳转,跳转之前的语句全部执行,跳转之后的语句不会执行(如果使用JDBC,跳转前必须关闭,否则将再也无法关闭);
Ø使用response.sendRedirect(Stringlocation)跳转:
属于客户端跳转,地址栏改变,不可传递request属性;实在所有语句执行结束之后才进行跳转;
Ø使用request.getCookies()可取得response设置的全部Cookie,使用Cookie类的方法setMaxAge(intexpiry)可设置Cookie保存最大时间(单位以秒记);
Øsession常用方法:
publicStringgetId();(取得session的ID)
publiclonggetCreationTime();(取得session的创建时间)
publiclonggetLastAccessedTime();(取得session的最后一次操作时间)
publicbooleanisNew();(判断是否是新的session(用户))
publicvoidinvalidate();(让session失效)
publicEnumerationgetAttributeNames();(得到全部属性的名称)
Ø可以配置server.xml,使每次的session在服务器关闭时保存,并在下次继续使用,叫做session的持久化;
Øsession使用的最多的是登录验证和注销;
Ø会话跟踪的4种技术:
1、使用session的方法,(用的多);
2、使用Cookie;
3、使用表单的隐藏域;
4、通过地址重写;
Øapplication常用方法:
publicStringgetRealPath(Stringpath);(得到虚拟目录的绝对路径)
publicEnumerationgetAttributeNames();(得到所有属性的名称)
publicStringgetContextPath();(取得当前的虚拟路径名称)
Ø尽量使用this.getServletContext()代替application对象;
Ø网站计数器:
使用BigInteget;用户在第一次进入才计数(isNew()方法);更改保存时的同步操作;
ØTomcat路径映射配置:
(可以通过虚拟路径访问安全文件夹下页面)
he
/WEB-INF/hello.jsp
he
/hello.123
Ø映射路径配置参数,可通过config对象取得;
ØpageContext对象可取得很多其他的内置对象,但是其中很大部分只有基本功能(由于是内置对象的父类对象,如取得request则是ServletRequest对象);
ØJaveBean名词:
VO:
只对象,存放所有的传递数据的操作;
POJO:
简单Java对象;
TO:
传输对象,一个类必须实现Serializable接口后才称为传输对象;
ØWEB开发的标准目录结构:
Ø可以使用import导入使用JavaBean,也可使用jsp标签(原理是使用反射机制实例化):
useBeanid="实例化对象名称"scope="保存范围"clsss="包.类名称"/>
Ø虚拟目录配置时候,以下方式可使Tomcat自动检测JavaBean修改与否,并自动重载;
该配置适合调式使用,在真正运行时这么设置,会使服务器性能下降;每次重加载后,相当于服务器重启,之前的session属性会全部消失;
ØsetProperty>设置属性属性:
自动匹配:
setPropertyname="对
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
-
JavaEE
基础
概览
小结
经典
![提示](https://static.bingdoc.com/images/bang_tan.gif)
冰点文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。