《爱读书系列》,本人会把技术学习中阅读过的书籍通过笔记和总结的方式与粉丝分享,此系列是在原著基础上 本书简介书名为《轻量级JavaEE企业应用实战》,是本人在学习JavaEE框架的时候阅读的第一本书,本书对于框架及相关基础知识讲述的比较详细和浅显,适合初学者和需要全面了解JavaEE知识的人群。
WEB应用和web.xml1.构建WEB应用 使用IDE创建项目?当然可以。但我们今天来学学不用IDE如何创建一个WEB应用。步骤如下: (1)在任意目录下新建一个文件夹作为应用根目录,笔者以webDemo文件夹建立一个web应用 (2)在应用根目录下创建一个WEB-INF文件夹(区分大小写) (3)进入Tomcat中找到任何一个默认WEB应用,将其WEB-INF下的web.xml文件复制到自己所创建的对应文件夹下 (4)配置web.xml文件(PS:相关配置我会另写文章讲解) <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" (5)在WEB-INF目录下,新建两个文件夹:classes和lib,这两个文件夹都是用于保存WEB应用所需的Java类文件,区别是classes保存单个class文件;lib保存打包后的JAR文件 (6)现已建立了一个空WEB应用。将该应用复制到Tomcat的webapps路径下 (7)将JSP文件放在WEB应用的根路径下,就可以通过浏览器来访问这些页面了,URL路径:http://localhost:port/webDemo/*.jsp 如上所述,WEB应用的目录结构如下: 2.配置描述符web.xml web.xml文件被称为配置描述符,在Servlet2.5之前,WEB应用必须包含一个web.xml文件,且必须放在WEB-INF路径下。WEB-INF是个特殊的文件夹,WEB容器会包含该文件夹下的内容,但浏览器无法访问WEB-INF下的任何内容。
web.xml可以实现如下的所有配置功能: (1)配置JSP (2)配置Servlet (3)配置Listener (4)配置Filter (5)配置标签库 (6)配置JSP属性 (7)配置JAAS授权认证 (8)配置资源引用 (9)配置WEB应用首页 JSP基本原理JSP注释JSP注释不会输出到客户端,格式如下: <%-- 注释内容 --%> JSP声明JSP声明用于声明变量和方法 <%! 声明部分 %> JSP输出<%=表达式%>
JSP脚本<% 代码 %>
JSP的编译指令(3个)编译指令格式如下 <%@ 编译指令 属性名="属性值"...%> 1.page:是针对当前页面的指令,位于页面顶端 属性说明: language:声明JSP页面使用的脚本语言,默认java 2.include:指定包含另一个页面 语法如下: <%@include file="相对路径"%> include指令可以将外部文件嵌入当前页面,这是静态include语句,它会把目标页面的其他编译指令也包含进来。即先把目标页面的代码融入当前页面后再编译。
3.taglib:用户定义和访问自定义标签 JSP的动作指令(7个)jsp:forward:执行页面转向,将请求转发到下一个页面 1.forward指令 用于页面转发,可转发到静态页面、动态页面或Servlet。转发后的请求参数不会丢失。 语法如下: <jsp:forward page="相对路径"> 转发时可通过param指令传递参数,并通过如下方式获取值: <%=request.getParameter("key")%> 2.include指令 动态的页面导入命令,它不会导入被包含页面的编译指令,仅将被导入页面的body内容插入本页。 语法如下: <jsp:include page="相对路径" flush="true"> flush属性设置输出缓存是否转移到被导入文件中,true则包含在被导入文件中,false则包含在原文件中。 动态导入和静态导入的区别 3.useBean、setProperty、getProperty指令 这三个指令都是JavaBean相关指令。在我们将重复代码定义成Java类的方法后,这三个指令可用于调用。 useBean语法如下: <jsp:userBean id="name" class="classname" scope="page|request|session|application"/> id:是JavaBean的实例名 setProperty语法如下: <jsp:setProperty name="BeanName" property="propertyName" value="value"/> getProperty语法如下: <jsp:getProperty name="BeanName" property="propertyName"/> 举个例子,如下图: 4.param指令 param指令无法单独使用,可以与如下指令结合使用: (1)jsp:include (2)jsp:forward (3)jsp:plugin JSP内置对象(9个)application:ServletContext实例,代表所属WEB应用本身
1.application对象 application两个作用
2.config对象 用于Servlet获取配置参数(使用getInitParameter) 3.exception对象 exception对象仅在异常处理页面有效 4.pageContext对象 使用pageContext可以访问page、request、session、application范围的变量 getAttribute(String name):取得page范围内的属性 使用pageContext可以获取其他内置对象 getRequest():获取request对象 5.request对象 (1)获取请求头/请求参数 getParameter(String paramName):获取请求参数的值 GET与POST GET方式的请求:GET请求会将请求参数的名和值转换成字符串,并附加在原URL之后,URL和参数之间以"?"分隔,多个参数之间以"&"分隔,且请求传送的数据量较小,一般不大于2KB POST方式的请求:POST请求参数的大小不受限制,往往取决于服务器的限制,POST传输的数据量比GET传输的数据量大,且请求参数放在HTTP HEADER中传输,安全性相对较高
(2)操作request范围的属性 setAttribute(String name, Object value):设置request范围属性 (3)执行forward或include getRequestDispatcher(String path).forward(request, response):跳转页面 6.response对象 (1)response响应生成非字符响应 getOutputStream():获取输出流 (2)重定向 sendRedirect("path"):重定向,重定向会丢失所有请求参数 forward与redirect对比 (3)增加cookie addCookie(Cookie cookie):增加cookie 7.session对象 seesion代表一次用户会话,即客户端浏览器连接服务器开始,到关闭浏览器结束。session属性可在一次会话内在多个页面间共享数据。session属性值必须是可序列化的Java对象。 setAttribute(String attName, Object attValue):设置session属性值 争议与思考我们日常开发经常使用浏览器来访问WEB应用,IE、360、火狐、谷歌你觉得哪个浏览器最好用?为什么呢?评论区留言吧! |