HTML基础
目录
HTML书写规范
HTML标签
简介
特殊字符
a标签
列表标签
ul是无序列表
type属性可以修改列表项前面的符号
li是列表项
-------------------------------------------------------------------------------------------------------------------------ol是有序列表
img标签
table标签
跨行跨列表格
td标签
colspan属性设置跨列
rowspan属性设置跨行
iframe标签
表单标签
关于GET和POST请求
PS:对于POST请求需要设置编码格式
javaWeb中的路径问题
CSS基础
标签名选择器
标签名{ 属性:值; }
id选择器
#id属性值{ 属性:值; }
class选择器(类选择器)
.class属性值{ 属性:值; }
JavaScript基础
JS中的变量
关系(比较)运算
等于: == 等于是简单的做字面值的比较
全等于: === 除了做字面值的比较之外,还会比较两个变量的数据类型
逻辑运算
数组
PS:javaScript语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组做扩容操作。
函数
function 函数名(形参列表){ 函数体 }
JS中的自定义对象
Object形式:
对像的定义:
var 变量名= new Object(); //对象实例(空对象)
变量名.属性名=值; //定义一个属性
变量名.函数名=function(){} //定义一个函数对象的访问
变量名.属性/函数名();
{}花括号形式
var 变量名={}; //空对象
var变量名={
属性名:值, //定义一个属性
属性名:值 函数名:funciton(){} //定义一个函数
}
JS中的事件
常用事件
事件的注册
例:
DOM模型
DOM全称是Document Object Model文档对象模型
JQuery基础
简介
例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JSTest</title> <script type="text/javascript" src="../js/jquery-1.3.2.js"></script> <script> $(function () {//表示页面加载完成后,相当于Window.onload=function(){} var $btnObj=$("#btn1");//表示按id查询标签对象 $btnObj.click(function () {//绑定单机事件 alert("JQuery点击"); }) }) </script> </head> <body> <button id="btn1">按钮</button> </body> </html>
JQuery核心函数
$是jQuery的核心函数,能完成jQuery的很多功能。$()就是调用$这个函数。
区分JQuery对象和dom对象
jQuery对象是dom对象的数组+ jQuery提供的一系列功能函数。
JQuery对象和dom对象的相互转换
JQuery选择器
基础选择器
层级选择器
过滤选择器
内容过滤器
属性过滤器
表单过滤器
元素筛选
JQuery属性操作
DOM的增删改操作
JQuery中的CSS样式
JQuery中的动画
JQuery中的事件
JavaWeb基础
Servlet中浏览器与服务器的映射代码体现
<servlet>
<servlet-name>AddServlet</servlet-name>
<servlet-class>com.shangguigu.Servlet.AddServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddServlet</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
解析
编码设置
tomcat8开始,设置编码,只需要针对post方式
request.setCharacterEncoding ("UTF-8") ;
PS:需要注意的是,设置编码这一句代码必须在所有的获取参数动作之前
Servlet继承关系
Servlet的生命周期
Servlet中初始化方法init()
业务层的概念
IOC
HTTP协议
会话
资源跳转方式-服务器内部转发or客户端重定向
Thymeleaf(视图模板技术)
过滤器
事务管理
ThreadLocal
监听器
QQZone项目小结
开发具体的业务模块:
1) 一个具体的业务模块纵向上由几个部分组成:
- html页面
- POJO类
- DAO接口和实现类
- Service接口和实现类
- Controller 控制器组件
2) 如果html页面有thymeleaf表达式,一定不能够直接访问,必须要经过PageController
3) 在applicationContext.xml中配置 DAO、Service、Controller,以及三者之间的依赖关系
4) DAO实现类中 , 继承BaseDAO,然后实现具体的接口, 需要注意,BaseDAO后面的泛型不能写错。
例如:
public class UserDAOImpl extends BaseDAO<User> implements UserDAO{}
5) Service是业务控制类,这一层我们只需要记住一点:
- 业务逻辑我们都封装在service这一层,不要分散在Controller层。也不要出现在DAO层(我们需要保证DAO方法的单精度特性)
- 当某一个业务功能需要使用其他模块的业务功能时,尽量的调用别人的service,而不是深入到其他模块的DAO细节
6) Controller类的编写规则
① 在applicationContext.xml中配置Controller
<bean id="user" class="com.atguigu.qqzone.controllers.UserController>
那么,用户在前端发请求时,对应的servletpath就是 /user.do , 其中的“user”就是对应此处的bean的id值
② 在Controller中设计的方法名需要和operate的值一致
public String login(String loginId , String pwd , HttpSession session){
return "index";
}
因此,我们的登录验证的表单如下:
<form th:action="@{/user.do}" method="post">
<inut type="hidden" name="operate" value="login"/>
</form>
③ 在表单中,组件的name属性和Controller中方法的参数名一致
<input type="text" name="loginId" />
public String login(String loginId , String pwd , HttpSession session){
④ 另外,需要注意的是: Controller中的方法中的参数不一定都是通过请求参数获取的
if("request".equals...) else if("response".equals....) else if("session".equals....){
直接赋值
}else{
此处才是从request的请求参数中获取
request.getParameter("loginId") .....
}
7) DispatcherServlet中步骤大致分为:
0. 从application作用域获取IOC容器
1. 解析servletPath , 在IOC容器中寻找对应的Controller组件
2. 准备operate指定的方法所要求的参数
3. 调用operate指定的方法
4. 接收到执行operate指定的方法的返回值,对返回值进行处理 - 视图处理
8) 为什么DispatcherServlet能够从application作用域获取到IOC容器?
ContextLoaderListener在容器启动时会执行初始化任务,而它的操作就是:
1. 解析IOC的配置文件,创建一个一个的组件,并完成组件之间依赖关系的注入
2. 将IOC容器保存到application作用域
初时Cookie