幸运飞艇app注册_Java匹马行天下之JavaWeb核心技术——JSP
- 时间:
- 浏览:0
一、JavaWeb简介
一、哪几个是JavaWeb?
- JavaWeb是用Java技术来处理相关web互联网领域的技术总称。
- 还要在特定的web服务器上运行,分为web服务器和web客户端两主次
- 跨平台,不需要还可不还可不可以在多个平台下部署和运行
二、静态网页和动态网页
- 静态网页:网页中的内容是固定的,不需要更新。
- 所用技术为html、css;
- 动态网页:网页中的内容通过线程动态显示的,自动更新。
- 所用技术为html、css、数据库、最少一门高级语言(Java、C#,PHP),JavaScript,XML等,主流的动态网页脚本技术(jsp/Asp.net/php)
三、Tomcat服务器目录介绍
WEB-INF是Java的Web应用的安全目录。所谓安全却说客户端无法访问,不还可不还可不可以服务端不还可不还可不可以 访问的目录。
web.xml文件是项目的部署文件
classes文件夹,用于放置*.class文件
lib文件夹,用于存放还要的jar包
如图:
四、修改Tomcat服务器默认端口
在Tomcat的安装目录下,找到conf-->server.xml文件
找到Connector标签
修改port属性的值即可,端口修改完成时候记得保存,咋样让重启Tomcat服务器。
二、JSP基础学习
一、JSP简介
JSP全名为Java Server Pages,其根本是三个小 简化的Servlet设计,他实现了再Java当中使用HTML标签。JSP是五种动态网页技术标准也是JavaEE的标准。JSP与Servlet一样,是在服务器端执行的。
JSP实际上却说Servlet。JSP这门技术的最大的特点在于:写jsp就像在写html,但它相比html而言,html不还可不还可不可以为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
二、JSP的作用
- Servlet:服务器端的小应用线程。适合编写Java逻辑代码,事先编写网页内容------->费时费力,太苦
缺点:不适合设置HTML响应体,还要大量的
response.getWriter().print("<html>");
优点:动态资源,不还可不还可不可以 编程。
- HTML:静态内容
缺点:HTML是静态页面,不还可不还可不可以所含动态信息;
优点:不需要为输出html标签而发愁。
- jsp(java server pages):适合编写输出动态内容,但不适合编写Java逻辑
优点:在原有HTML的基础加带带java脚本,构成jsp页面。
三、JSP和Servlet的分工
- JSP
作为请求发起页面,例如显示表单、超链接。
作为请求现在结速页面,例如显示数据。
- Servlet
作为请求中处理数据的环节
四、JSP的组成
jsp=html+java脚本+jsp标签(指令)
jsp中不需要创建即可使用的对象一共有9个,称为九大内置对象。
3种java脚本:
- <%……%> java代码片段(常用),用于定义0-N条java得话,妙招内写哪几个就不还可不还可不可以 在这里写哪几个,不还可不还可不可以声明妙招和类;
- <%=……%> java表达式,用于输出(常用),用于输出根小表达式(或变量)的现在结速,print()括号中参数不还可不还可不可以 放哪几个,这里就能放哪几个;
- <%!……%> 声明,用来创建类的成员变量和成员妙招(基本不需要),class A{ } 类体中不还可不还可不可以 放哪几个,这里就不还可不还可不可以 放哪几个。
五、JSP的执行流程及原理
jsp真是是五种特殊的Servlet
- 当jsp页面第一次被访问时,服务器会把jsp编译成java文件(這個 java真是是三个小 Servlet类);
- 咋样让再把java编译成.class;
- 咋样让创建该类对象;
- 最后调用它的service()妙招;
- 第二次请求同一jsp时,直接调用service()妙招。
- 在Tomcat的work目录下不还可不还可不可以 找到jsp对应的.java源代码。
1、IE浏览器在访问JSP页面时,Web服务器是咋样调用并执行三个小 jsp页面的?(Servlet)
- 第一次:转译(翻译) --> 编译 --> 执行
- 第二次:执行
2、Web服务器在执行jsp页面时,是咋样把Jsp页面中的html排版标签发送到客户端的?
- out.print("<......>"); 事先 out.write("<......>");
3、Jsp页面中的java代码服务器是咋样执行的?
- 服务器 --> .java文件 --> .class文件 --> 结果out回客户端
4、Web服务器在调用jsp时,会给jsp提供這個 哪几个java对象(内置对象)?
- HttpSession、ServletConfig、ServletContent、request、response、out等等。
六、JSP的基本语法
- Servlet:控制器。重点编写java代码逻辑。(获取表单数据、处理业务逻辑、派发转向)
- JSP:代码显示模板。重点在于显示数据。(为哪几个显示数据不直接用.html文件呢?事先.jsp文件中不还可不还可不可以 插入java代码显示回显消息,简言之,jsp功能更强大)
1、JSP的模版元素:简言之却说网页的静态内容
例如:html标签和普通文本。
2、JSP的脚本
- <%……%> java代码片段(常用),用于定义0-N条java得话,妙招内写哪几个就不还可不还可不可以 在这里写哪几个,不还可不还可不可以声明妙招和类;
- <%=……%> java表达式,用于输出(常用),用于输出根小表达式(或变量)的现在结速,print()括号中参数不还可不还可不可以 放哪几个,这里就能放哪几个;
<%= 2 + 3 %> 等价于out.print(2 + 3);
- <%!……%> 声明,用来创建类的成员变量和成员妙招(基本不需要),class A{ } 类体中不还可不还可不可以 放哪几个,这里就不还可不还可不可以 放哪几个。
3、注释
JSP注释:<%-- 被注释的内容 --%> 特点:安全,省流量
网页注释:<!-- 网页注释 --> 特点:不安全,费流量
七、JSP的三个小 指令
JSP指令(directive)是为JSP引擎而设计的,它们无须直接产生任何可见输出,而却说告诉引擎咋样处理JSP页面中的其余主次。
在JSP 2.0规范中共定义了三个小 指令:
- page指令(页面级别)
- include指令(导入其它页面的信息)
- taglib指令(标签指令)
例如:
1、page
作用:page指令用于定义JSP页面的各种属性,无论page指令总出 在JSP页面中的哪几个地方,它作用的完整都是整个JSP页面。
为了保持线程的可读性和遵循良好的编程习惯,page指令最好是放在去整个JSP页面的起始位置。
属性:
- import和java代码中的import是一样的。
<%@ page import="java.util.Date, java.util.List" %>
事先:
<%@ page import="java.util.Date" %>
<%@ page import="java.util.List" %>
JSP会自动导入(默认导入)以下的包:
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
- session: 表示与非 会自动创建session对象。其默认值是true。
- buffer: JSP所含javax.servlet.jsp.JspWriter输出字符流。设置输出数据的缓存大小,默认大小是8kb。建议最好无须改大小。
- errorPage: 事先页面所含错误,则跳转到指定的资源。(即不需要页面弹出404/1150等错误)
errorPage="/uri"
事先写"/"则代表当前应用的目录下,绝对路径。
事先不写"/"则代表相对路径。
- isErrorPage: 表示与非 创建throwable对象。其默认值是false。作用:输出页面错误信息:by zero
- contextType: contentType="text/html; charset=UTF-8" 告诉浏览器使用哪几个编码来解析文本。等同于 response.setContextType("text/html; charset=utf-8");
- pageEncoding: 告诉JSP引擎(服务器)要转译(翻译)的文件使用的编码。
例如:<%@ page pageEncoding="gbk" %>
- isELIgnored: 与非 支持EL表达式。 默认是false,表示支持EL表达式。
例如:${1+1} 等价于out.print(1+1);
2、include
include指令用于引入其它JSP页面,事先使用include指令引入了其它JSP页面,不还可不还可不可以JSP引擎将把这三个小 JSP翻译成三个小 servlet。却说include指令引入通常也称之为静态引入。
- 静态所含:把其它资源所含到当前页面中。
<%@ include file="/include/header.jsp" %>
- 动态所含:
<jsp:include page="/include/header.jsp"></jsp:include>
两者的区别:转译(翻译)的时间段不同
- 前者:在翻译时就把三个小 文件合并
- 后者:不需要合并文件,当代码执行到include时,才所含却说文件的内容。
使用原则:能用静的就不需要动的。愿因之一是:不还可不还可不可以 省略這個 代码的书写。
3、taglib
JSP API允许用户自定义标签,三个小 自定义标签库却说自定义标签的集合。
Taglib指令引入三个小 自定义标签集合的定义,包括库路径、自定义标签。
Taglib指令的语法:
<%@ taglib uri="uri" prefix="prefixOfTag" %>
uri属性确定标签库的位置,prefix属性指定标签库的前缀。
等价的XML语法:
<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />
作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> prefix:前缀(最少重新给uri起个名字)
示例:
<% if (5 > 3) { out.print(5); } %> <%-- 上下二种妙招是等价的 --%> <c:if test="${5>3}"> aaa </c:if>
下面的這個 妙招很好用!里边慢慢体会。
八、JSP的动作
使用标签的形式来表示一段java代码。
JSP行为标签使用XML语法特性来控制servlet引擎。它不需要还可不还可不可以动态插入三个小 文件,重用JavaBean组件,引导用户去却说页面,为Java插件产生相关的HTML等等。
行为标签只五种语法格式,它严格遵守XML标准:
<jsp:action_name attribute="value" />
行为标签基本上是這個 预先就定义好的函数,下表罗列出了這個 可用的JSP行为标签:
九、JSP的九个内置对象
指在JSP的<%=%> 和<% %>中不还可不还可不可以 直接使用的对象,服务器给朋友 创建好的对象,直接拿过来用就行了。
例如:
<%=request.getParameter("name") %> <% Student stu = new Student(); stu.setName("tom"); out.print(stu.getName()); // request.getRequestDispatcher("/7.jsp").forward(request, response); %>
十、JSP客户端请求
HttpServletRequest类
request对象是javax.servlet.http.HttpServletRequest类的实例。每当客户端请求三个小 页面时,JSP引擎就会产生三个小 新的对象来代表這個 请求。
request对象提供了一系列妙招来获取HTTP信息头,包括表单数据,cookies,HTTP妙招等等。
接下来事先介绍這個 在JSP编程中常用的获取HTTP信息头的妙招。完整内容请见下表:
HTTP信息头示例
在這個 例子中,朋友 会使用HttpServletRequest类的getHeaderNames()妙招来读取HTTP信息头。這個 妙招以枚举的形式返回当前HTTP请求的头信息。
获取Enumeration对象后,用标准的妙招来遍历Enumeration对象,用hasMoreElements()妙招来确定哪几个事先停止,用nextElement()妙招来获得每个参数的名字
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.io.*,java.util.*" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <h2>HTTP 头部请求实例</h2> <table width="1150%" border="1" align="center"> <tr bgcolor="#949494"> <th>Header Name</th><th>Header Value(s)</th> </tr> <% Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String paramName = (String)headerNames.nextElement(); out.print("<tr><td>" + paramName + "</td>\n"); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>\n"); } %> </table> </body> </html>
十一、JSP服务器响应
HttpServletResponse类
response 对象是 javax.servlet.http.HttpServletResponse 类的三个小 实例。就像服务器会创建request对象一样,它也会创建三个小 客户端响应。
response对象定义了处理创建HTTP信息头的接口。通过使用這個 对象,开发者们不还可不还可不可以 加带新的cookie或时间戳,还有HTTP情況码等等。
下表列出了用来设置HTTP响应头的妙招,哪几个妙招由HttpServletResponse 类提供:
HTTP响应头线程示例
接下来的例子使用setIntHeader()妙招和setRefreshHeader()妙招来模拟三个小 数字时钟:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.io.*,java.util.*" %> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body> <h2>自动刷新实例</h2> <% // 设置每隔5秒自动刷新 response.setIntHeader("Refresh", 5); // 获取当前时间 Calendar calendar = new GregorianCalendar(); String am_pm; int hour = calendar.get(Calendar.HOUR); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); if(calendar.get(Calendar.AM_PM) == 0) am_pm = "AM"; else am_pm = "PM"; String CT = hour+":"+ minute +":"+ second +" "+ am_pm; out.println("当前时间: " + CT + "\n"); %> </body> </html>
此篇是我在学习过程中参考菜鸟教程以及笔记和别人博客(黑泽君)完成
Java匹马行天下依旧在更新中,欢迎朋友 关注,感觉不还可不还可不可以 的不还可不还可不可以 点击一下推荐,若如有误,感谢指正,谢谢!