第九次总结

小题:

1.Response和request对象是什么
	Response:浏览器请求服务器的时候:HTTPServletRequest(请求对象)
		http协议规定规则:无论什么浏览器,请求服务的时候,请求信息中包含了请求头和请求行
			请求头:提交方式	URi	http协议版本
			请求行:
				请求头名称:请求头内容
		服务器反馈给浏览器:将所有的响应信息都封装到HTTPServletResponse
			无论什么服务器:服务器的响应给浏览器,响应信息包含了响应行+响应头
			响应行:
				http协议版本	响应状态:200:成功	302:进一步请求
			响应头:
				refresh:定时刷新
				location:指定的页面地址
2.请求转发和重定向的区别
请求转发:
	1)地址栏没有变化
	2)请求转发:服务器行为:---request.getRequestDispatcher(“/xx”).forward(request,response)
	3)请求转发的整个过程:两次的request对象是一样的,可以携带数据
	4)请求转发只能访问当前工程下的资源文件/也可以访问WEB-INF下的资源文件
重定向:
	1)地址栏明显变化
	2)重定向:浏览器行为----原理:
		location+302状态:response.sendRedirect(request.getContextPath()+“/xx.jsp/html”)
	3)重定向的整个过程:两次request对象不一样,不能携带数据
	4)重定向:既可以访问当前工程下的资源文件/也可以访问外部工程的资源文件
3.servlet的执行流程
1)用户请求地址
2)toncat服务器解析用户请求的地址信息
3)将信息进行展示
4.Servlet的生命周期
	对象创建---初始化---服务方法---销毁
				init	service  destroy
5.四个域对象分别是什么
	PageContext page域	在当前jsp页面中有效
	HttpServlect	request域	在一次请求中有效
	HTTPSession		session域	在一次会话中有效
	ServelectContext	全局对象	在整个web工厂工程有效

会话管理

Cookie:存储在浏览器
	应用场景
		可以记录用户访问过的商品id
		记录用户上一次访问过的系统时间
Session:存储在服务器端
	应用场景
		前台::用户登录,需要将所有用户存储到session中
		验证码:使用画布技术---画出线条--产生一些随机数

会话技术:
	Cookie:
		存储在浏览器
		使用步骤:
			1)在服务器端:创建Cookie对象	Cookie ck=new Cookie(String name,String value)
			2)Cookie信息保留在浏览器端:public void addCookie(Cookie ck)
			3)下一次:浏览器向服务器端发送请求
				将上一次携带的cookie数据,来访问服务器
cookie和session进行对比
	cookie特点:
		1)存储在浏览器端
		2)存储的内容都是String类型:存储中文(特殊符号:空格 必须使用URLEncoder/URLDecoder:进行加密解密)
		3)cookie存储的数据量有限制:一个站点:20-30cookie左右
		4)cookie相对:不太安全
	session:
		1)存储在服务器端
		2)存储的内容可以是任意类型数据	因为它是一个域对象,可以进行数据共享
			setAttribute(String name,Object obj);
		3)存储的数据量没有上限
		4)相对安全
	

JSP

JSP简介

什么是JSP:Java server Page:Java服务页面 能够写java代码的html页面
在当前jsp页面上,可以使用Java语言
本质:就是一个Servlet

JSP的使用

jsp脚本:
	<%java代码%>
	<%= jsp的输出表达式%>

三大指令

JSP三大指令:
	@page
		language属性:只支持Java语言
		contentType:文本类型:html格式:utf-8
		pageEncoding:当前jsp的默认编码格式utf-8
		buffer:当前使用流的缓冲区大小 默认8kb
		errorPage:当前jsp页面如果发生异常,就跳转到错误页面上
		isELIgnored:是否启动el表达式:默认false
			el表达式
				就是为了书写简单:替代jsp表达式
				通用写法:${}
		session:是否启用session
	@include
	@taglib----需要结合:jstl(jsp核心标签库一块使用)
在jsp页面中引入jsp核心标签库

el表达式

${域对象.属性}----->{属性}

小题

1.什么是Jsp
JSP:Java server Page:Java服务页面 能够写java代码的html页面
在当前jsp页面上,可以使用Java语言
本质:就是一个Servlet
2.Jsp的执行流程
	1)发送请求到服务器
	2)服务器解析路径
	3)然后对XXX.jsp翻译为Java文件
	4)编译Java文件进行运行
3.Jsp中的四个域对象分别是什么
pageScope
requestScope
sessionScope
applicationScop
 
4.Servlet的结构体系
	GenericServlet implements servlet
	HttpServlet extends DenericServlet
		复写:Service方法
	自定义一个类,继承自HTTPServlet
		业务中,通过自己的方法完成自己的业务
5.jsp的三大指令
<%@page%>	指定语言,编码格式等
<%可以导入jar包%>
<%@include%>	静态导入(file文件.jsp):不会将被导入的jsp文件进行翻译和编译
<%@taglib%>		
6.Cookie和Session的区别
cookie和session进行对比
	cookie特点:
		1)存储在浏览器端
		2)存储的内容都是String类型:存储中文(特殊符号:空格 必须使用URLEncoder/URLDecoder:进行加密解密)
		3)cookie存储的数据量有限制:一个站点:20-30cookie左右
		4)cookie相对:不太安全
	session:
		1)存储在服务器端
		2)存储的内容可以是任意类型数据	因为它是一个域对象,可以进行数据共享
			setAttribute(String name,Object obj);
		3)存储的数据量没有上限
		4)相对安全

jstl核心标签库

核心库:core
函数路:function
sql语句:sql库

c:if
c:if标签:jstl判断语句
	属性:test	结合el表达式去使用${属性名称 判断表达式}
		结果是true,执行c:if标签表达式
	test=“$判断”
		empty:是否为空
		test=${not empty 属性名称}判断当前属性绑定的对象不为空
c:choose	类似于选择结构语句
<c:choose>
	<c:when 判断>标签体1</c:when>
	......
	<c:otherwise>标签体n</c:otherwise>
</c:choose>
	c:when test=“xxx”	相当于switch语句中的case语句
	c:otherwise		相当于switch语句中的default语句
常用:遍历
c:foreach
属性
	var:循环中的变量名
	类型普通for循环
	begin:开始循环中的数据
	end:结束时候的数据
	step:步长语句
	index:索引
	varStatus:循环中变量的状态
	count:序号
	<c:foreach var="i" begin="10" varStatus="status">
		${status.cont} - ${i}<br />
	</c:foreach>
c:foreach 另一种用法
	items=“${属性名称}” 从域对象中获取的属性绑定的内容
	<c:foreach items="${name}" var ="p">
		${name.cont}-${p}<br />
	</c:foreach>

MVC架构

Model:模型
	业务数据
view:视图层
Controller:控制层

servlet:不应该输出页面
jsp:不应该写大量java代码
	work
		业务接口层
	work.impl
		业务接口实现层
	dao
		数据访问层
	dao.impl
	
    
 //具体包:
 entity
 	实体类
 utils
 	工具类
 dao
 	dao.impl
 		实现dao接口
 service
 	jsp文件,获取商品信息
 
 	service.impl
 		实现service接口
 servlet
 	具体的操作,获取前台数据
 web
 	druid.properties//这是页面布局,可以返回结果到sevlet
 
 使用el获取上下文路劲:
 	<%
 	//pageContext.getRequest().getContextPath()
 	${pageContext.requst.contextPath}
 	%>

url-pattern
	
	@WebFilter("/xx")
			属性
					String[] value() ;
					String[] url-patterns() ;
					
配置方式
		1)具体的路径  :只要当前请求到具体的jsp页面的时候,过滤器才会被执行!
				/index.jsp
				/xxx.jsp
		2)指定目录  :当前请求"/user/updatServlet"的时候,过滤器才会被执行
				/user/findAllServlet
				/user/updateServlet
				
		3)指定后缀名的方式: 只有当请求后缀名为.jsp的时候,过滤器的会被执行
				*.jsp   
				
		4)通用方式: /*  :
				请求所有的地址,过滤器都会被执行 (全局的乱码操作!)  
	

Filter里面过滤的方式

@WebFilter里面的属性
DispatcherType[] dispatcherTypes()  
返回值DispatcherType 枚举类型
	public enum DispatcherType {
      REQUEST,  ---默认: 直接请求的时候,过滤器作用
      FORWARD,   ---  请求转发页面跳转的时候,过滤器器起作用 
    INCLUDE,   --- 某个页面被包含的时候,过滤器会被执行
    ASYNC,     --- 非同步请求的时候,过滤器会被执行
    ERROR     ---  错误页面跳转,过滤器会被执行
}

栅格系统

1.使用栅格系统之前或者任意页面布局之前
	class属性
		container:支持固定宽度以及响应格式
		container-fluid:类似于100%宽度。占据全部窗口
2.栅格系统
	boostrap:针对移动设备进行的流式布局
	随着当前屏幕/视口的增加/减少,当前视图随着变化而变化
	
	针对每一个页面布局
		12列:一行12个格子
		
	class属性:
		row:行----都是用在页面布局容器中
			.container
			.container-fluid
	针对不同的屏幕分辨率的尺寸
		分辨率<768px	超小屏幕(手机)	class属性 col-xs-当前所占份额
			>=768px		小屏幕			clsaa属性	col-sm-当前所占份额
			>=968px 	中等屏幕				col-md-当前所占份额
			>=1200px  大屏幕					 col-lg-当前所占份额

小题:

1.Jsp的四个域对象分别是什么
1)pagScope
2)requestScope
3)sessionScope
4)applicationScope
2.c:foreach标签的常用属性
c:foreach
属性
	var:循环中的变量名
	类型普通for循环
	begin:开始循环中的数据
	end:结束时候的数据
	step:步长语句
	index:索引
	varStatus:循环中变量的状态
	count:序号

3.请求转发和重定向的区别
请求转发:属于服务器行为
	地址栏没有变化
	两次请求对象是一样的,能够携带数据
	只能在当前工程下请求资源,或者转发到WEB-INF下的资源地址
	应用场景在Controller控制层
		如果有具体业务数据,使用请求转发
重定向:属于浏览器行为
	地址栏明显变化
	两次的请求对象不一样,只进行页面跳转,不会携带数据
	页面跳转可以在当前站点下,也可以访问外部站点,不能直接重定向到当前WEB-INF
	应用场景在Xontroller层
		仅仅只是一个页面跳转
4.cookie和session的区别
cookie:
	存储在浏览器端
	存储的数据类型:只能String类型
	cookie存储的数据有限制:一个站点20-30个
	不安全,不适合存储隐私数据
session:
	存储在服务器端
	存储的数据类似是任意Java类型
	存储的数据没有限制
	相对cookie安全
	
5.线程的状态有几种,以及多线程的实现方式
线程状态:6种
	NEW
	RUNNABLE
	WEATTING
	TIMED_WATTING
	BLOCK
	TERMINTED
三种实现方式:
	1)继承自Thread
	2)实现Runable接口
	3)多线程方式
		ExecutorService--->Executors--->public static ExecutorService newFixedThreadPool(int nThread)
	
    
1.throw和throws的区别
throw:书写在方法内,后面跟异常对象,表示异常出现肯定性,异常的处理交给逻辑语句
throws:书写在方法声明上,后面可以跟多个异常类名,表示异常出现的可能性,异常的处理交给调用者
2.过滤器的生命周期
无参构造:创建对象
init():初始化方法
doFilter():过滤任务
destroy():销毁
3.TreeSet集合针对自定义对象排序,什么时候自然排序和选择排序
	TreeSet集合里面的add方法,依赖TreeMap集合的put方法
	
	如果使用无参构造方法TreeSet<>()---自然排序
		自定义类型必须implements Comparable接口
			重写compareTo(T t)
	如果使用有参构造方法:比较器排序
		new Comparator<>(){
			//重写compare(T1 t1,T2,t2){
				//比较器排序
			}
		}
4.mysql事务的隔离级别
四个隔离级别:
read uncommitted :读未提交	--安全性最差,会出现脏读现象,读取到未提交的数据
read coommitted:读已提交	--不可重复读,两次的读取数据不一样,能够看出变化
repeatable read:可重复读	--可以防止不可重复读,需要提交事务后,才能显示结果
serializeable :串行话---隔离级别最高
5.数据库的三大范式是什么
	1NF:表中的每一列:不可再拆分:独立的
	2NF:表中的每一列都完全依赖于主键
	3NF:表中的每一个字段不能传递依赖

用户管理系统

1.登录过滤任务

loginFilter
路径:/*

将用户登录的相关资源,排除掉(放行)
   /login.jsp
   /loginServlet
   /checkCodeServlet
   /css
   /js
   /fonts
   /img...
   
   获取http://lcalhost:8080/Admin_Project/index.jsp
   
   过滤器doFilter(ServletRequest/ res,ServletRespons resp,ChainFitler...)
   	//需要将ServletRequest/ServletResponse---->HttpServletRequest,HttpServletResponse
   	rquest.getURI ;-----String uri
   	//进行判断即可是否是上面的这些登录的相关资源
   	   放行
   	   
   	 如果不是登录相关的资源
   	    判断,用户是否登录过,
   	    从session中获取用户---->如果用户不为null,
   	    登录过,放行
   	    如果用户为null
   	    设置登录页面提示"用户还没有登录过"
   	    请求转发到登录页面login.jsp
   	
   

通过id进行修改

修改用户:
    两个步骤
      1)首先的通过id 查询到用户
          findUserServlet
          
          接收参数
          ----->需要通过用户封装数据
          如果查询servier--dao层:查询user
          将用户对象存储request域中,请求转发update.jsp
          
          ----将用户的信息回显到upate.jsp上面
          
         2)修改样用户的信息----->提交update.jsp----->UpdateUserServlet
         封装业务数据
           调用service
           调用dao层
   
 删除选中的条目---执行批量删除
 	1)前台:完成全选----反选

    只要当前第一个复选框和每一个列的复选框保持的checked状态(选中:true,没有选中:false)
    
2)点击超链接----超链接失效----执行点击事件跳转
   选中删除
     a href="javascript:void(0)" id="delSelected"
     //选中的条目----执行表单提交
       
       
       
  3)后台业务
  
    只需要接收这些用户id编号   String[]  ids=  request.getParamerterValues() ;
    调用service----
         delSelected(String[] ids)
         
       遍历ids
         为了防止:空指针
         if(ids!=nulll && ids.length>0){
             //遍历
             for(String id:ids){
             //调用dao层
             dao.delete(Integer.parseInt(id));
             
            }
             
         }
     
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值