为什么学习B/S技术?
客户端 服务器 C(Client)/S(Server)有局限性,必须安装客户端
浏览器 服务器 B(Browser)/S(Server)无需安装客户端软件,也无需更新
B/S与C/S的比较:
| B/S架构 | C/S架构 |
软件安装 | 浏览器 | 在响应速度和安全性上需要花费更多设计成本 |
升级维护 | 客户端零维护 | 客户端需要单独维护和升级 |
平台相关 | 与操作系统平台的关系最小化 | 对客户端操作系统一般有限制 |
性能安全 | 在响应速度和安全性上需要花费更多设计成本 | 能充分发挥客户端处理能力,客户端响应快 |
什么是B/S技术:
B/S架构(浏览器/服务器):程序完全部署在服务器上
B/S技术的工作原理:
B/S架构采用请求/响应模式进行交互
URL(Uniform Resource Locator统一资源定位符):
URL的组成
http :// localhost:8080 / news/index.html
http:协议部分
localhost:8080:主机IP地址:端口号
news/index.html:项目资源地址
服务器:
图片服务器
文件服务器
数据库服务器
缓存服务器
应用服务器
Java Web ---> Web服务器
Web服务器:
是可以向发出请求的浏览器提供文档的程序
提供网上的信息浏览服务
常用的Web服务器:
Microsoft:IIS
Apache: Tomcat
(Tomcat是开源的,小型的免费的)
Oracle:WebLogic
IBM:WebSphere
(前两个商用的,安全级别更高)
Nginx
(稳定性高,占用内存小,并发能力强)
Tomcat服务器:
Apache Jakarta的开源项目
轻量级应用服务器
开源、稳定、资源占用小
JSP/Servlet容器
Tomcat的目录结构:
目录 | 说明 |
/bin | 存放各种平台下用于启动和停止Tomcat的脚本文件 |
/conf | 存放Tomcat服务器的各种配置文件 |
/lib | 存放Tomcat服务器所需的各种JAR文件 |
/logs | 存放Tomcat的日志文件 |
/temp | Tomcat运行时用于存放临时文件 |
/webapps | 当发布Web应用时,默认情况下会将Web应用的文件存放于此目录中 |
/work | Tomcat把由JSP生成的Servlet放于此目录下 |
操作Tomcat注意事项:
1. startup.bat启动后,不许关闭,一定是最小化
2. 如果Tomcat启动时,窗口一闪而过
找到jdk D:\大数据\Java\Java jdk
环境变量path D:\大数据\Java\Java jdk\bin;
建立环境变量JAVA_HOME:D:\大数据\Java\Java jdk
CTRL+C:快速停止服务器
3. http://localhost:8080 端口号:8080 页面进入到Tomcat启动成功界面
4. 端口号修改:conf/server.xml
示例:
5. 如何在Tomcat中部署静态网站
将网页复制到webapps文件夹中去,然后startup.bat启动后,再网页中输入http://localhost:8080/news/index.html
使用集成开发工具创建Web项目:
- 在MyEclipse中创建Web项目:File -> New -> Web Project
- 为项目命名并调整相关设置
- 查看项目目录结构
部署Web项目方法一:
1. 配置Tomcat
a. Window -> Preferences -> MyEclipse -> Servers -> Tomcat
b. 选择Tomcat版本及安装路径
c. 设置为可用状态(Enable)
d. 指定Tomcat运行Java的运行环境
2. 部署Web项目
a. 单击MyEclipse菜单栏上的部署图标
b. 选择需要部署的项目
c. 选择Tomcat服务器并确认
部署Web项目方法二:
部署应用程序到Tomcat的webapps目录:生成War包
部署Web项目方法三:
修改server.xml
<Context path="” docBase="”/>
提示:路径中最好不要包含中文
JSP(Java Server Pages)概述:
- 运行在服务器端的Java页面
- 使用HTML嵌套Java代码实现
工作原理:
JSP中的page指令:
通过设置内部的多个属性定义整个页面的属性
语法:
<%@ page 属性1="属性值" 属性2="属性值1,属性值2"…属性n="属性值n"%>
常用属性:
属性 | 描述 | 默认值 |
language | 指定JSP页面使用的脚本语言 | java |
import | 通过该属性来引用脚本语言中使用到的类文件 | 无 |
contentType | 用来指定JSP页面所采用的编码方式 | text/html, ISO-8859-1 |
JSP中的声明:
语法:
<%! Java代码%>
示例:JSP页面中定义方法对日期进行格式化
<%@ page language="java" import="java.util.*,java.text.*" contentType="text/html; charset=utf-8"%>
<html>
<%!
String formatDate(Date d){
SimpleDateFormat formater =
new SimpleDateFormat("yyyy年MM月dd日");
return formater.format(d);
}
%>你好,今天是
<%=formatDate(new Date()) %>
</body>
</html>
注:
方法声明后可在页面中多处调用
JSP中的out对象:
- out对象是JSP的内置对象:无需实例化即可使用
- 实现数据的输出显示
- out对象的方法
属性 | 说明 |
| 向页面输出显示 |
printIn | 向页面输出显示,在结尾处添加换行 |
但是在实际页面中print和println没有区别,因为在页面中不会解析出println的换行;想要换行必须加<br/>
JSP中的注释:
- HTML的注释:<!-- html注释-->
- JSP注释:<%-- JSP注释--%>
- 在JSP脚本中注释:<%//单行注释%>;<%/*多行注释*/%>
网页输出文本:
1. 用Java语言输出文本:
<% out.println("<h1>课工场Java Web高能充电</h1>"); %>
2. 直接用HTML输出文本:
<h1>课工场Java Web高能充电</h1>
3. 使用<% out,print(); %>或<% out.printIn(); %>实现显示页面全部内容,这样做的弊端:
①JAVA代码与HTML标签混在一起,可读性不好,不利于修改
②显示数据来自于数据库,数据库里的数据不能写死,要用变量来读取写在数据库的内容
③因为不方便所以这种方法用的比较少
4. 用变量的方法输出文本:
<% String title="课工场Java Web高能充电"; %>
<h1> <%=title%></h1>
好处:直接在数据库里读的时候直接调用后台方法。
注:变量声明的时候要在最后加一个分号(;),在调用的时候前面要写(<%=),但是最后不能写分号(;)
特殊字符转义:
在JSP中特殊字符如:“”;<>;等。要用转义字符(\)来转义从而使用
<%String title="课工场\"Java Web\"高能充电";%>
<h1> <%=title%></h1>
示例解析:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page%>:这是一个配置指令会说明三个指令
language:说明编程语言,这里用的是Java语言
import:代表页面里导入的一个包,这里导入的是java.util.*包
pageEncoding:指的是页面的编码格式,这里用的是UTF-8语言
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%......%>:要在这里写Java代码,叫做Java的小脚本
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--<link rel="stylesheet" type="text/css" href="styles.css">-->
</head>
<body>
This is my JSP page. <br>
</body>
</html>
剩下的都是普通的html标签
JSP页面元素:
Web容器处理JSP文件请求:
第一次处理需要经过3个阶段:
- 翻译阶段
- 编译阶段
- 执行阶段
第一次请求之后,Web容器可以重用已经编译好的字节码文件:
如果对JSP文件进行了修改,Web容器会重新对JSP文件进行翻译和编译。
JSP声明全局变量和方法:
<%//jsp中的局部变量和全局变量
int i = 9; %>
<h1><%=i++%></h1>
<%! int j = 9; %>
<h1><%=j++%></h1>
每次刷新i的值不会改变,j的值会每次加1
其中i是局部变量(JSP里设定局部变量的方法:<%......%>),j是全局变量(JSP里设定全局变量的方法:<%!......%>)
全局变量在源文件的位置:
要是设定一个方法用的符号是<%!......%>
如:
<%! public int add(){
return 8+9; } %>
方法在源文件的位置:
在页面里写方法的做法不常见,后台方法一般都写在src里
Web程序调试和排错:
1. 404错误---找不到访问的页面或资源
①运行时,URL输入错误
排错方法:检查URL
排除错误:使用正确的URL
②将页面放在WEB-INF下
排错方法:检查文件的存放位置(META-INF,WEB-INF文件夹下的内容无法对外发布)
排除错误:把index.html文件拖至WebRoot文件夹下
③外部启动Tomcat,未部署Web应用
排错方法:检查Web应用是否正确部署
排除错误:部署Web应用
2. 500错误---JSP页面代码有误
JSP页面代码有错误
排错方法:检查myeclipse里的报错信息
排除错误:直接修改
3. 页面无法显示
未启动Tomcat
排错方法:检查Tomcat服务能否正确运行
排除错误:
- 启动Tomcat服务
- 如果控制台上显示Tomcat服务已启动,观察端口号是否与预期端口号一致,按照实际端口号重新运行
总结: