第一章:网页开发基础
DOM:文档对象模型,是处理可扩展标志语言的标准编程接口,可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。
第二章:JavaWeb概述
约束
Doctype 引入(DTD)约束
schema约束 用于定义和描述XML文档结构与内容模式语言,克服了DTD的局限性。
http1.0和http1.1区别
1.0 客户端与服务器建立连接后,每次只能处理一个HTTP请求。
1.1 支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
HTTP请求消息:
一个完整的请求消息是由请求行,请求头和实体内容三部分组成。
请求行:get post
请求头:referer头字段可用于网站的防盗链。
Tomcat
-
bin 存放Tomcat可执行文件和脚本文件 例如startup.bat
-
conf 存放Tomcat配置文件,如web.xml server.xml
-
lib 存放Tomcat服务器 和各种web应用程序需要的jar文件
-
logs 存放Tomcat日志文件
-
temp 存放Tomcat运行时产生的临时文件
-
webapps 通常将要发布的的应用程序放到这个目录下
-
work Tomcat工作目录,存放jsp编译生成的servlet源文件和字节码文件
第三章:Servlet基础
Servlet特点
- 方便
- 跨平台
- 灵活性和可拓展性
Servlet多重映射 p101
ServletConfig接口
ServletConfig主要作用为读取该Servlet的配置信息从中获得参数名的参数值
ServletConfig config = getServletConfig();
String encoding = config.getInitParameter("encoding");
String num = config.getInitParameter("num");
//这种方式会得到一个Enumeration对象
Enumeration<String> names = config.getInitParameterNames();
while (names.hasMoreElements()){
String s = names.nextElement();
String initParameter = config.getInitParameter(s);
}
<servlet>
<servlet-name>HomeWork</servlet-name>
<servlet-class>HomeWorks.HomeWork</servlet-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>num</param-name>
<param-value>100</param-value>
</init-param>
</servlet>
ServletContext接口
- 获取web应用的初始化参数
<!-- 全局配置参数,因为不属于任何一个servlet,但是所有的servlet都可以通过servletContext读取这个数据 -->
<context-param>
<param-name>param1</param-name>
<param-value>value1</param-value>
</context-param>
<context-param>
<param-name>param2</param-name>
<param-value>value2</param-value>
</context-param>
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//使用servletContext读取全局配置参数数据
//核心方法
/*getServletContext().getInitParameter(name);//根据指定的参数名获取参数值
getServletContext().getInitParameterNames();//获取所有参数名称列表*/
//打印所有参数
//1.先获取所有全局配置参数名称
Enumeration<String> enumeration = getServletContext().getInitParameterNames();
//2.遍历迭代器
while(enumeration.hasMoreElements()){
//获取每个元素的参数名字
String parameName = enumeration.nextElement();
//根据参数名字获取参数值
String parameValue = getServletContext().getInitParameter(parameName);
//打印
System.out.println(parameName+"="+parameValue);
}
}
-
实现多个servlet共享数据,是作用域最大的域对象。
-
读取web下的资源文件。
第四章:请求和响应
1.Response响应乱码解决方法
1.采用字节流响应
//设置中文转换成字节数组字符集编码
outputStream.write("下载中....".getBytes("UTF-8"));
2.采用字符流响应
//方式一
//设置response获得字符流的缓存区的编码
response.setCharacterEncoding("UTF-8");
//设置浏览器默认打开的时候采用的字符集
response.setHeader("Content-Type","text/html;charset=UTF-8");
//方式二
//直接利用setContentType()方法便可以同时设置缓存区和浏览器默认字符集 推荐采用第二种
response.setContentType(text/html;charset=UTF-8);
2.Request请求乱码解决方法
1.Post请求
//设置request缓冲区的编码为UTF-8
request.setCharacterEncoding("UTF-8");
2.Get请求
//获取数据
String name = request.getParameter("name");
//利用String类的构造方法转换
String userName = new String(name.getBytes("ISO-8859"),"UTF-8");
//输出
System.out.println("用户名:" + userName);
3.转发和重定向
1.转发的特点
- 地址栏不发生变化,显示的是上一个页面的地址
- 请求次数:只有1次请求
- 根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
- 请求域中数据不会丢失
2.重定向的特点
- 地址栏:显示新的地址
- 请求次数:2次
- 根目录:http://localhost:8080/ 没有项目的名字
- 请求域中的数据会丢失,因为是2次请求
小结:重定向和转发的区别
区别 | 转发forward() | 重定向sendRedirect() |
---|---|---|
根目录 | 包含项目访问地址 | 没有项目访问地址 |
地址栏 | 不会发生变化 | 会发生变化 |
哪里跳转 | 服务器端进行的跳转 | 浏览器端进行的跳转 |
请求域中数据 | 不会丢失 | 会丢失 |
第五章:会话
1.什么是会话
会话简单理解为:用户打开一个浏览器,点击多个超链接访问服务器的web资源,然后关闭浏览器,整个过程称为是一次会话。
2.Cookie技术
Cookie是客户端技术,程序把每个用户的数据以cookie的形式保存到各自浏览器中。当用户使用浏览器再次访问服务器中的web资源的时候,就会带着各自的数据过去。这样,web资源处理的就是用户各自的数据了。
3. Session技术
Session是服务器端的技术,利用这个技术,服务器在运行时为每一个用户的浏览器创建一个独享的session对象。由于session为用户浏览器独享,所以用户在访问服务器的时候,可以把各自的数据放在各自的session中,当用户再次访问服务器中的web资源的时候,其他web资源再从用户各自的session中取出数据为用户服务。
注意:客户端(Client)是发送请求(request),服务器端(Service)是响应请求(response),返回相应的资源数据
4.Cookie与Session的区别:
- cookie是保存在客户端的
- cookie有大小限制
- session是保存在服务器端
- session更加安全
- session会比较占用服务器性能,当访问增多时应用cookie
- Cookie可以设置为长期有效,而Session会随会话窗口关闭而失效。
第六章:JSP
1.什么是jsp?
jSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
jsp的本质就是一个servlet
2. JSP中的三种注释
- HTML注释:
- Java注释:(1) //单行注释 (2) /多行注释/
- JSP隐式注释:<%- -这是JSP注释- -%>
3. page指令
除了import属性外,其他属性只出现一次
4. JSP九大内置对象
request:请求对象
response:响应对象
pageContext:JSP的上下文对象,jsp中可以通过pageContext对象获取其他八个内置对象。
session:会话对象
application:ServletContext对象
config:ServletConfig对象
out:JSP输出流对象
page:指向当前JSP的对象
exception:异常对象
5. JSP四大域对象
第七章:EL
1. javabean
JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。
特点:
- 属性私有。
- 必须具有一个公共无参的构造方法,提供get和set方法实现对成员属性的访问。
2. EL11大内置对象
applicationScope
应用程序范围内的scoped变量组成的集合
cookie
所有cookie组成的集合
header
HTTP请求头部,字符串
headerValues
HTTP请求头部,字符串集合
initParam
全部应用程序参数名组成的集合
pageContext
通过这个可以获取jsp中的隐式对象
当前页面的javax.servlet.jsp.PageContext对象
pageScope
页面范围内所有对象的集合
param
所有请求参数字符串组成的集合
paramValues
所有作为字符串集合的请求参数
requestScope
所有请求范围的对象的集合
sessionScope
所有会话范围的对象的集合
第八章:Servlet高级
1.过滤器的三个方法
public class filter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
@Override
public void destroy() {
}
}
2.过滤器的生命周期
- init()初始化方法
第1步骤,在web工程启动的时候执行(Filter过滤器已经创建)
- doFilter()过滤方法,每次拦截请求就会执行
- destory()销毁,在停止web工程的时候,就会执行(停止web工程,也会销毁Filter过滤器)
第九章:JDBC
1.Query
import java.sql.*;
public class JDBC01 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//配置信息
//useUnicode=true&characterEncoding=utf-8解决中文乱码问题
String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
String username = "root";
String password = "111111";
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
//3.向数据库发送SQL对象 Statement
Statement statement = connection.createStatement();
//4.编写SQL
String sql = "select * from users;";
//5.执行SQL 返回一个结果集
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
System.out.println("id="+rs.getObject("id"));
System.out.println("name="+rs.getObject("name"));
System.out.println("password="+rs.getObject("password"));
System.out.println("email="+rs.getObject("email"));
System.out.println("birthday="+rs.getObject("birthday"));
}
//6.关闭连接 释放资源 先开的后关
rs.close();
statement.close();
connection.close();
}
}
2. update
import java.sql.*;
public class JDBC02 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//配置信息
//useUnicode=true&characterEncoding=utf-8解决中文乱码问题
String url = "jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
String username = "root";
String password = "111111";
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
//3.编写SQL
String sql = "insert into users (id,name,password,email,birthday) values (?,?,?,?,?);";
//4.预编译
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, 4);//给第一个占位符?赋值为4
preparedStatement.setString(2, "赵六");//给第二个占位符?赋值为赵六
preparedStatement.setString(3, "123456");//给第三个占位符?赋值为123456
preparedStatement.setString(4, "2658@qq.com");//给第四个占位符?赋值为2658@qq.com
preparedStatement.setDate(5, new Date(new java.util.Date().getTime()));//给第五个占位符?赋值为时间
//外面为sql.date 里面为util.date
//5.执行SQL 返回一个结果集
int i = preparedStatement.executeUpdate();
if (i > 0) {
System.out.println("插入成功");
}
//6.关闭连接 释放资源 先开的后关
preparedStatement.close();
connection.close();
}
}
第12章:JSP开发模型
MVC模式
- 模型(Model)
- 视图(View)
- 控制器(Controller)