1、概念:英文全称,中文意思
1.1、http:超文本传输协议(HyperText Transfer Protocol)
一种无状态协议,意思就是说服务器端和客户端浏览之间的不需要建立永久连接。
1.2、URL:统一资源定位符(Uniform Resource Locator),用来唯一标识互联网上的具体的计算机的命名约定。
URL的组成:
http://www.baidu.com?tn=9801
https://news.qq.com/a/20180826/048218.htm?tn=9801
1、http:协议部分
2、www.baidu.com:主机地址和端口号(dns转换ip和端口号)
3、/a/20180826/048218.htm?tn=9801&page=1:资源地址
?tn=9801:参数
1.3、C/S和B/S的区别?
C/S:Client(客户端)/Server(服务器)
B/S:Browser(浏览器)/Server(服务器)
a) C/S:
从数据维护来说:需要维护客户端和服务器端,
从安全性来说(偏向于局域网): C/S是优于B/S。
从技术来说:现在的一些技术B/S达不到,比如说游戏的游戏引擎
b) B/S:
从数据维护来说只需要维护服务器端,
从技术来说:现在的一些技术B/S达不到
未来的发展趋势向B/S的方向
2、主流Web服务器
Tomcat、JBoss、WebLogic、WebShare、
Tomcat服务器,特点是什么?
1、开源
2、资源占用小
3、轻量级的应用服务器
Tomcat的目录结构:
tomcat8
|__bin 可执行文件
|__conf 配置文件
|__lib tomcat所需的jar文件
|__logs tomcat启动过程中产生的日志文件
|__temp tomcat启动和执行过程中产生的临时文件
|__webapps 发布的web工程
|__work jsp编译后生成的.java和.class文件
3、jsp(全称:Java Server Page:运行在服务器的页面)
HTML:静态网页技术
JSP:动态网页技术, 在HTML里嵌入java代码
1、jsp在第一次访问时才会执行转换和编译的过程.
2、如果修改了jsp文件,那么在第二次访问时会重新进行转换和编译的过程。
3.1) jsp的组成:
a) 浏览器解析:html、javascript、style
b) java脚本:
b.1) jsp指令
b.1.1) page指令
<%@ page language=”java” import=”java.util.*”
pageEncoding=”ISO-8859-1”
contentType=”text/html; charset=ISO-8859-1” %>
language:开发语言,默认java
import:默认导入”java.util.*”,在本页面需要导入类或接口时,在这里配置,多个导入之间用逗号分隔
pageEncoding:配置本页的编码方式,默认是ISO-8859-1(tomcat的默认编码)
显示中文:
utf-8:支持国际化,比如日文,韩文
gbk2312:常用的简体中文
gbk:比gbk2312更多的汉字,包括简体和繁体。
contentType:配置编码方式,是指服务器发回给客户端的编码方式
jsp文件的执行过程:
1、将jsp文件转换为.java文件
是根据pageEncoding设置的编码读取文件内容转换为.java文件
2、将.java文件编译成.class文件
由JVM根据utf-8格式转换为.class文件,外部控制不了的
3、执行.class文件
发送回客户端的编码是根据contentType来转换的。
tomcat底层对编码是有优化:
tomcat将jsp转换为java文件是按照pageEncoding->contentType的顺序查找
tomcat将发送响应到客户端时是按照contentType->pageEncoding的顺序查找
b.1.2) include指令
b.1.3) taglib指令
b.2) jsp动作
<jsp:include>和include指令的区别:
b.3) jsp脚本:
jsp声明:
<%!
//java代码
%>
jsp表达式:并且最后不能加上";"
<%=java代码 %>
jsp小脚本:
<%
//java代码
%>
c) 注释:
html注释:<!-- html注释 -->在浏览器上看得到
java注释:<%-- java注释 --%>在浏览器上看不到
3.2)jsp的内置对象有哪些?
内置对象:就是不需要手动new的对象.
输出:
1.out:输出对象
四大作用域:
2.pageContext:本页面作用域对象
3.request:请求对象-1次请求的对象
String getParameter(String name):获得指定请求参数名的值(单个参数名)
String[] getParameterValues(String name):获得指定请求参数名的值(一组相同名称的参数名)
4.session:会话对象--包含多个请求的对象
String getId():获得当前会话ID
5.application:应用工程对象--包含多个会话
6.response:响应对象
response.sendRedirect(url);
response.addCookie():添加1个Cookie对象返回到客户端浏览器
7.page:相当于this对象
8.config:ServletConfig对象
9.exception:异常对象
练习:注册功能
用户名,密码,邮箱,兴趣爱好,将这些值在第2个页面输出
3.3)4大作用域:从小到大的顺序
pageContext–>request–>session–>application
pageContext:可以访问本页面作用域范围内设置的值 (本页面)
request:可以访问1次请求内的作用域范围内设置的值 (无论跳转了多少个页面,只要在当前请求内)
session:可以访问当前会话内的作用域范围内设置的值 (无论发了多少次请求,只要在会话内)
application:可以访问当前工程应用内的作用域范围内设置的值 (无论有多少个会话,只要在当前工程应用内)
void setAttribute(String name,Object value):设置属属性名对应的值
Object getAttribute(String name):根据指定name取值
3.4)session和cookie的区别
session中保存的数据存储于服务器端
cookie中保存的数据存储于客户端浏览器
安全性问题:
服务器端保存数据安全性高于客户端浏览器。
考虑什么数据保存在session中,什么数据保存在cookie。
安全性要求比较高的数据保存于Session中,安全性要求没那么高,不需要保密的数据就可以存储于cookie中。
3.5)get和post的区别
a) get在网址栏时会显示出提交的请求数据,get安全不高
提交的数据量拼接在url后面,所以是字符串长度限制的。256K
b) post在网址栏是不会显示提交的请求数据,post的安全性会高
数据量4M
3.6)转发和重定向的区别
a) 转发
属于1次请求内,请求后跳转的页面需要前面(前一页面)页面数据时,在网址栏只会显示第1次请求的页面
request.getRequestDispatcher(url).forward(request,response)
b) 重定向:通知浏览器发出第二次请求,不能共享前面页面的数据,并且网址栏的内容会变成重定向后的页面
response.sendRedirect(url);
3.7)中文乱码问题
1.post
1.1) 使用new String();
1.2) 通过request.setCharacterEncoding(“utf-8”);
2.get
2.1) 使用new String();
2.2) 如果在tomcat8之前,需要修改/conf/server.xml文件
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000" URIEncoding="utf-8"
redirectPort="8443" />