JAVAWEB
JAVAWEB
day1-html
HTML是一门标签语言,不区分大小写
form标签:
提交方式有七种:
POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
get:在地址栏中拼接参数
post:底层以流的形式传输
如果同时使用多种方式引入css样式,则越靠近标签的样式代码越优先生效。选择的标签越具体的样式越优先生效。
day2-js&json
后端js:node.js
在js中使用var定义的变量,为弱类型
json全部加双引号则为json串
day3-dhtml&jquery
jquery不兼容老版本
四个优势:
可以通过css选择器选中页面中的元素
动态创建html元素
便捷的获取文档就绪事件
便捷的修改css样式
day4-mysql
安装过程:
Custom
取消掉Launch the MySQL Instance Configuration Wizard的对勾,不运行mysql配置程序,后面可以在bin目录下面用管理员权限运行MySQLInstanceConfig.exe来配置mysql实例
Detailed Configuration精细化配置
Developer Machine开发者机器
Multifunctional Database多用途数据库
Decision Support(DSS)/OLAP设置数据库最大连接数
启用网络选项,并勾选Add firewal exception for this port,使mysql可以通过防火墙
勾选Enable Strict Mode,启用严格模式
Best Support For Multilingualism字符集编码选utf-8
勾选Install As Windows Service,将mysql添加为windows服务项
默认服务名称,勾选Launch the MySQL Server automatically,设置服务自启
勾选Include Bin Directory in Windows PATH,将mysql/bin加入path变量中
为root账户设置密码,勾选Enable root access from remote machines,是否允许远程可以通过root账户访问
安装时全部对勾,为配置正确
数据库字符串类型:
varchar(20):在存储数据的时候数据的长度不是固定的,可以在指定的范围内存储任意长度的数据。varchar在读取数据的时候效率较低
char(2):在存储数据的时候数据的长度是固定的,尽管输入的数据没有达到指定的长度也会占用数据库中的指定的长度。char读取数据的时候效率较高
day5-jdbc
六步实现jdbc连接:
○ 注册数据库驱动
//DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.jdbc.Driver");
○ 获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb2?user=root&password=root");
○ 创建传输器
Statement stat = conn.createStatement();
○ 传输sql并返回结果
ResultSet rs = stat.executeQuery("select * from user");
○ 遍历结果
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString(2);//从1开始
Date date = rs.getDate("birthday");
System.out.println("id:"+id+"name:"+name+"date:"+date);
}
○ 关闭资源
rs.close();
stat.close();
conn.close();
常用数据库连接写法:
Oracle写法:jdbc:oracle:thin:@localhost:1521:sid
SqlServer—jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
MySql—jdbc:mysql://localhost:3306/sid
Mysql的url地址的简写形式: jdbc:mysql:///sid
常用属性:useUnicode=true&characterEncoding=UTF-8
ResultSet.next();
ResultSet.Previous();
数据库连接代码:
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
conn = JDBCUtils.getConnection();
ps = conn.prepareStatement("select * from user where username=? and password = ?");
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery();
System.out.println("登录成功");
if(rs.next()){
System.out.println("登录失败");
}else{
}
try {
e.printStackTrace();
} catch (Exception e) {
JDBCUtils.close(conn, ps, rs);
}finally{
}
PreparedStatement是有预编译功能的传输器,可以防止sql注入攻击
preparedStatement的执行原理:
第一步:将sql语句的主干部分发送到数据库。主干部分的参数使用问号预留。
第二步:将sql语句的参数发送到数据库。
批处理:
○ 采用Statement.addBatch(sql)方式实现批处理:
优点:可以执行多条不同结构的sql语句
缺点:没有使用预编译机制,效率低下,如果要执行多条结构相同仅仅参数不同的语句时,仍然需要多次写sql语句的主干。
○ 采用PreparedStatement.addBatch()方式实现批处理:
优点:有预编译机制,效率比较高,执行多条结构相同,参数不同的sql时,不需要重复写sql的主干
缺点:只能执行主干相同参数不同的sql,没有办法在一个批中加入结构不同的sql
executeBatch()方法:执行批处理命令
clearBatch()方法:清除批处理命令
c3p0连接池的配置:
c3p0-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
分区 day05-jdbc 的第 16 页
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
<property name="user">root</property>
<property name="password">root</property>
</default-config>
</c3p0-config>
c3p0.properties:
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/jdbc
c3p0.user=root
c3p0.password=root
day6-web&tomcat&http
硬件服务器和软件服务器
tomcat:zip(解压)、tar.gz(Linux)、exe(安装)
startup.bat可以用来启动tomcat
netstat -ano查询端口
虚拟主机
Web应用的概念
Web应用的部署
Web应用的目录结构
http版本:1.0/1.1
http的模型:
基于请求响应的模型
一次请求对应一次响应
请求由浏览器发出,服务器根据请求作出响应
http响应状态码:
302 +location 304 307---缓存
404 访问资源路径不存在
500 505 503 502 服务器报错(代码编写出现错误)
网络七层协议:
应用层(HTTP、FTP、SMTP、POP3、TELNET)->表示层->会话层->传输层(TCP、UDP)->网络层(IP)->数据链路层->物理层
JAVAEE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,共有十三种技术规范
day7-servlet&request
servlet技术是一门由sun公司提供的动态资源开发的技术。servlet本质就是
一个java文件。存放在servlet容器中。
servlet容器:tomcat
web容器:tomcat
servlet继承GenericServlet抽象类,重写service方法。
servlet:
servlet接口:Servlet--GenericServlet--HttpServlet
servlet运行过程:init()--缓冲区(tomcat内存中)--service()--destroy()
servlet生命周期:在用户访问servlet时创建,在tomcat服务器关闭或被移除容器的时候销毁
HttpServletRequest和HttpServletResponse这两个接口并不能创建对象,而由各自接口的子实现类创建的对象,这两个子实现类分别为:HttpServletRequestWrapper、HttpServletResponseWrapper
servlet需要配置的标签:
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>cn.tedu.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-parttern>/servlet/FirstServlet</url-parttern>
</servlet-mapping>
<load-on-startup>启动加载顺序</load-on-startup>
servlet运行过程:
i. 浏览器发出请求
ii. 将域名解析为ip地址,访问对应ip地址的服务器,再根据端口号确定访问的是tomcat服务器。
iii. 再根据请求头host确定访问哪一台虚拟主机。
iv. 再根据请求行确定请求的web应用虚拟路径。
v. 再根据请求行确定请求的哪一个web资源虚拟路径。
vi. 再根据web.xml文件与虚拟路径相比较,如果有对应的servlet映射路径,则将创建一个servlet对象。
vii. 在执行service方法后,会将响应结果放入response缓冲区中。在服务器中组织成一定结构。
viii. 由服务器发送到浏览器中,浏览器解析执行。
request继承结构:ServletRequest--HttpServletRequest
request请求:
域对象:如果一个对象有一个可以被看见的范围,在这个范围内利用对
象身上的map实现数据的共享,这样一个对象就称之为域对象。
域对象API:
setAttribute(String name,Object value)设置域属性。
getAttribute(String name)根据域属性获取域属性的值
removeAttribute(String name)删除域属性
getAttributeNames()获取全部域属性的名称
day8-response
response.setContentType("text/html;charset=utf-8");
response.setStatus(302);
response.setHeader("location","http://www.tmooc.cn");
定时刷新:
三种资源跳跃方式总结:
day11-servletconfig&servletcontext&ajax
getServletConfig();
getServletContext();
ajax:异步的js和xml,是一种异步请求方式
js中设置有一个XMLHttpRequest类型
day12-cookie&session
http当前请求中无法保留上一次的请求
cookie存在浏览器,不安全
session保存在服务器,安全,保存太长时间会影响服务器效率
day13-jsp
jsp本质也是把它一个servlet文件,初次访问时翻译成servlet文件
九大隐式对象:
page代表当前servlet的对象
request代表请求的对象
response代表响应的对象
session代表会话的对象
config代表当前servlet配置信息的对象
application代表当前web应用的对象
out代表输出缓冲区的对象
exception代表跳转页面的错误信息的对象
pageContext代表当前页面上下文的对象
pageContext作为入口可以get获取其他八大隐式对象
四大作用域:
ServletContext
Session:整个会话范围内共享数据,默认30分钟
request:请求链中共享数据
pageContext:页面内共享数据
el表达式用来代替java表达式${}
jstl标签库<taglib><c:>
day14-javadesignmodel
mvc开发思想
javaee经典三层开发架构
day15-filter&md5&listener
filter:
init()
doFilter()
destroy()
责任链模式:多个过滤器
listener:
监听三大作用域变化的监听器
监听三大作用域中属性变化的监听器
监听javabean和
day16-log4j&transaction
数据库事务操作:
start transaction;启动事务
commit;提交事务
rollback;回滚事务
事务的四大特性ACID:原子性、一致性、隔离性、持久性
数据库隔离级别:
set global/session/不写(修改下一次) transaction isolation level read uncommitted;级别最低,性能最高,可出现脏读,不可重复读,可出现虚读/幻读。
set global/session/不写(修改下一次) transaction isolation level read committed;级别较低,性能较高,可防止脏读,不可重复读,可出现虚读/幻读。
set global/session/不写(修改下一次) transaction isolation level repeatable read;级别较高,性能较弱,可防止脏读,可重复读,可出现虚读/幻读。数据库默认级别。
set global/session/不写(修改下一次) transaction isolation level serializable;级别最高,性能最弱,可防止脏读,可重复读,可防止虚读/幻读。称之为串行化模式。
select @@tx_isolation;查看数据库隔离级别
锁机制:
非serializable查询,不添加锁
serializable查询,共享锁
所有增删改,排他锁
表级锁和行级锁
死锁:两个线程相互等待对方释放资源,这个等待的过程就称之为死锁。两种解决方法:销毁一个进程或修改代码。
乐观锁和悲观锁

浙公网安备 33010602011771号