3 Web开发
隐藏:
原生js:
Var o = document.getElementById(“#tt”);
o.style.display = “none”;
JQuery:
$(“#tt”).hide();
Xml描述一个人的身份证:
<idcard>512021********633*</idcard>
<name>张三</name>
<sex>男</sex>
Json描述一个人的信息:
idcard: 512021********633*
name: 张三
sex:男
键值对: 键名+键值
Json语法:如
{"name":"runoob", "alexa":10000, "site":null}
3.1 Web开发基础知识
常见的软件结构模式分为两种:B/S, C/S
b/s结构模式采用了请求/响应的模式进行交互
前台向后台提交的请求的过程:
1).前台通过表单发送一个请求:
2).服务器根据请求地址通过配置文件web.xml找到相应的Servlet类:
3).根据请求的类型(get/post)执行servlet类中的doGet/doPost方法:
4).从request对象中获取传递的参数:
3.2 Tomcat
服务器
tomcat
常见的web服务器都有:
微软公司:IIS
Apache:tomcat
Oracle:WebLogic
IBM:WebSphere
结构目录
/bin | 存放各种平台下用于启动和停止Tomcat的脚本文件 |
|
|
/conf | 存放Tomcat服务器的各种配置文件 |
/lib | 存放Tomcat服务器所需的各种JAR文件 |
/logs | 存放Tomcat的日志文件 |
/temp | Tomcat运行时用于存放临时文件 |
/webapps | 当发布Web应用时,默认情况下会将Web应用的文件 存放于此目录中 |
/work | Tomcat把由JSP生成的Servlet放于此目录下 |
使用idea创建一个新的web项目
idea配置tomcat
1:让你在edit configurations有tomcat
下一步:
下一步:
下一步:
配置Artifics的作用更改输出的路径
将这个路径改为tomcat/webapp路径下
配置好了,然后介绍web应用的目录
Src用于写java代码
web下面用于放html css js 等等一些资源 这里有个jsp可以直接访问这个index.jsp
3.3 Jsp
1. Jsp脚本和注释:
jsp当中的java代码应该怎么写,或者写在哪里
三大指令
(1)page指令
(2)include指令
(3)taglib指令
9大内置对象
名称 | 类型 | 描述 |
out | javax.servlet.jsp.JspWriter | 用于页面输出 |
request | javax.servlet.http.HttpServletRequest | 得到用户请求信息, |
response | javax.servlet.http.HttpServletResponse | 服务器向客户端的回应信息 |
config | javax.servlet.ServletConfig | 服务器配置,可以取得初始化参数 |
session | javax.servlet.http.HttpSession | 用来保存用户的信息 |
application | javax.servlet.ServletContext | 所有用户的共享信息 |
page | java.lang.Object | 指当前页面转换后的Servlet类的实例 |
pageContext | javax.servlet.jsp.PageContext | JSP的页面容器 |
exception | java.lang.Throwable | 表示JSP页面所发生的异常,在错误页中才起作用 |
3.4 Servlet
1、Servlet技术
2、filter 过滤器
3、listener 监听器
http请求
一个抓包的demo 去查看请求
常见请求头 | 描述 (红色掌握,其他了解) |
Referer | 浏览器通知服务器,当前请求来自何处。如果是直接访问,则不会有这个头。常用于:防盗链 |
If-Modified-Since | 浏览器通知服务器,本地缓存的最后变更时间。与另一个响应头组合控制浏览器页面的缓存。 |
Cookie | 与会话有关技术,用于存放浏览器缓存的cookie信息。 |
User-Agent | 浏览器通知服务器,客户端浏览器与操作系统相关信息 |
Connection | 保持连接状态。Keep-Alive 连接中,close 已关闭 |
Host | 请求的服务器主机名 |
Content-Length | 请求体的长度 |
Content-Type | 如果是POST请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码 |
Accept: | 浏览器可支持的MIME类型。文件类型的一种描述方式。 MIME格式:大类型/小类型[;参数] 例如: text/html ,html文件 text/css,css文件 text/javascript,js文件 image/*,所有图片文件 |
Accept-Encoding | 浏览器通知服务器,浏览器支持的数据压缩格式。如:GZIP压缩 |
Accept-Language | 浏览器通知服务器,浏览器支持的语言。各国语言(国际化i18n) |
Servlet生命周期
servletContext 对象
Servlet执行过程
Servlet的配置信息:
3.6 会话技术session/cookie
Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端 可以清除cookie
Session:将数据存储到服务器端,安全性相对好,增加服务器的压力
订餐系统
主键:
主键特点:
自然主键,实际开发中,数据库某一字段完全符合主键的特点,可以使用他作为主键。
代理主键,在该表实际中没有一个符合设为主键的字段,但是数据表必须有主键,这个时候我们要使用代理主键(企业开发中最常用的)
Id 自增
Uuid(查)唯一的值 Java提供了一个类UUID 去获得这个数
订餐页面:
订餐的业务逻辑:
用户在前端页面 reserve.html
Method:“add”
orderDate:
eatData:
type:0(早)1(中)2(晚)
userId:(orderId)
OrdersServlet
add(){
1通过type和userId去查找是否可以订餐UserDao 如果小于0结束
如果可以订餐
2通过时间去获得这个价格priceDao
3向数据库中插入数据ordersDao
将结果返回给前端
前端处理业务逻辑
}
SQL语句的注入
用户在使用系统的时候 输入了sql语句or 1=1;
TomCat服务器扩展
Bin/要注意 不管什么软件这个目录下面都会放置可执行文件.exe文件
Conf/ #代表注释 <!-- -->注释方式 如果想更改Tomcat的端口号要修改conf/server.xml文件
Lib(库)/存放Tomcat服务器的jar包
Loge/日志文件
Webapps/是外部资源访问的默认地址
使用idea点击运行 idea都做了哪些事情
如何修改idea 项目 war包 的输出位置
掌握部署服务器
Servlet扩展
Servlet的生命周期
随着服务器的启动 客户的第一次访问 创建servlet对象
方面访问的事该对象 不会再重新创建
随着服务器关闭 而销毁
Init方法
ServletConfig对象
这个对象可以读取servlet的配置信息 通过键值对的方式
1在xml文件中配置init-param参数 以键值对的形式创建
2 config getinitparam这个方式去获取
Config能够获得servletcontext对象
这个对象是用来管理所有的servlet 也就是一个web应用只有一个servletcontext对象
这个对象是一个容器 他就可以存储数据也可以获得数据
可以实现servlet之间的交互 也就是说在一个servlet中可以获得另外一个servlet中的数据
Servlet存在线程安全问题?
什么是线程安全
Servlet是怎样存在线程安全问题的?如何解决
过滤器:
AOP面向切面编程
Java面向对象编程抽象 多态 继承 封装 OOP
过滤器
过滤 过滤请求
Filter
可以写多个
从用户访问->第一个过滤器->第二个过滤器->servlet
过滤器的生命周期 随着项目的启动而创建 当访04问了地址后 而调用doFilter方法 这个会多次执行随着项目的关闭而销毁
调用dofilter方法
Req(servletRequset)->HttpServletRequest 注意强转 (在使用HTTPServletRequest这个独有的方法时候要强转)
Resp
Chainfilter 链 可以指向下一个地址(如果有过滤器则下一个过滤器 没有则指向资源 servlet)
过滤 拦截 和(放行chain.doFilter(req, resp);//放行作用)
(1) 设置编码(为所有的 servlet)
(2) 设置跨域问题
(3) 解决所有的防盗链功能
使用过滤器时候需要配置地址
(1) 固定地址
(2) 通配符
(3) 指定目录
DButil工具类的使用
他能代替我们去处理结果集 将结果集封装成我们想要的东西(实体ben对象)
域对象:
Request responsesesslon servletContext四个
所有的域对象都会提供下面的三个方法
setAttribute 添加属性
getAttribute 获得属性
removeAttribute 删除属性
数据库连接池:
dbcp
c3p0连接池的使用
导包
配置文件 (不是必须 但是在企业中一定使用配置文件)
如果不使用配置文件 就要在代码中设置数据库参数4个
项目分为 开发环境 和运营环境 在开发时 开发人员接触不到公司实际数据库 数据库是机密 但是开发后也要更改数据库 但是不需要改代码 那就需要使用配置文件
导入自己写的工具类(初始化连接池 获得连接的方法)
在dao中使用工具类获得连接或者连接池 (有点工具类可以自动帮我们去建立连接)
比如dbutil工具类
配置文件
Java 中的一些键值对的配置文件专门提供了这样的类和文件名properties文件后缀名
Propetiess读取.properties文件的类 读取配置配置文件
1将配置文件变为流
2用java提供的properties类去加载这个流
3调用properties 对象的getProterty的方法这个方法需要一个参数键名返回的是一个值(字符串型)’
监听器
监听器 相当于之前所学的事件
源 监听的是谁
动作 触发的条件
响应 当这个条件满足的时候会执行函数
ServletContext对象:生命周期随着项目 的启动而创建 随着项目的关闭而销毁
Web项目
Dao方法 ->定义一个接口 (书写所有dao的方法)->这个dao的实现类
Servlet只负责接收请求返回响应
Service把所有业务逻辑放到service去实现
Service ->先定义接口->实现这个接口的实现类
书写步骤
1 定义接口 在接口中书写该接口提供的方法
2实现该接口的实现类 alt+enter(接口名上面)提示生成实现类
类名 声明为 接口名 +imol 说明是dao方法的实现类
包名 会放在dao下的一个包impl中
Bean实体对象
entity 实体
pojo 实体
exception NullPointerException 异常