浅谈JavaWeb知识点
每天积累一点点
-
胖客户端
胖客户端:含有逻辑代码,如果想变瘦需要将逻辑代码(解耦)提取出来,变成了三层C/S架构 -
两层C/S特点
数据库服务器充当服务器,在数据库编写业务处理逻辑,可移植性差。 -
三层C/S特点
数据库只负责存储数据,所有的业务逻辑写在应用服务器,可移植性好,适合开发大型应用,客户端需要单独安装和调试,需要自定义协议,中间有middle tie(中间件) -
B/S相关
客户端不需要重新安装,开发简单,不需要自定义协议,用户通过http协议到web server,在经过数据服务data server 与jrmp(java远程方法协议)连接到DB数据库,包装以后再返回到客户端。 -
JavaWeb由什么组成
jsp,servlet,jdbc,JavaBean四部分 -
web核心三部分
url:同一资源定位符
http:超文本传送协议
html:超文本标记语言 -
Tomcat是啥
Apache软件基金会提供的免费的开源代码的java web应用服务器,他是一种servlet&jsp的容器,作用是处理客户的http请求。 -
如何完成重定向
Response.setStatus(302);response.setGeader(”location”,”html/register.html”)
Response.sendRedirect(”html/register.html”) -
如何完成请求转发
Request.GetRequestDispatcher(“Servlet”).forward(request,response) -
会话跟踪与无状态协议
会话跟踪包括cookie, seccion,hiden页面隐藏域以及url重写技术,http是无状态协议,交换完毕后客户端与服务端的连接就会关闭,再次交换数据需要建立新的连接,用登陆来说就是每次登陆都要重新输入用户名和密码。
如果想做到第一次登陆成功,三天内不在出现登陆界面,而是实现自动登陆(三天免登陆效果)用cookie解决以上问题。
给客户端response一个通行证,服务证可以自动从通行证上确认身份,cookie具有时效性,cookie工作原理相应的也有临时cookie仅当次有效(员工卡)。
Cookiecookie=newcookie(“username”,”password”),
cookie.setMaxAge(Integer.MAX_VALUE),
response.addcookie(cookie).
如果不设置maxage, cookie存储在浏览器的内存中,则每次关闭时cookie失效,如果设置了则cookie固化到对应的系统文件中(外存)超时自动删除cookie。
Setpath设置一个路径(15) -
cookie作用
为了做到可以登陆一次,在一定时间内免登陆。设置maxAge()。 -
cookie产生位置
服务端产生。 -
cookie存储位置
request头文件。 -
如何从服务器端到客户端
服务端Cookie c1=new Cookie(“name”,value), 发送给客户端response.addcookie(cookie).
-
如何从客户端到服务端
请求头当中带着cookie(要求setpath一致可以携带,不一致不添加到request头文件中) -
session是什么
Session是另外一种记录客户状态的机制,不同的是cookie保存在客户端浏览器中,session保存在服务器中。 -
session与cookie不同
Cookie不安全,容易被窃取,Cookie不需要存到服务器中,存到客户端中,减轻服务器压力。session安全,存储到服务器端,但是过多的session会给服务器很大压力。 -
session解决问题
a.一定时间后失效b.将session 序列化serializable(也叫钝化),需要的时候反序列化(活化)。 -
session生命周期(默认30min)以及销毁
第一次访问服务器时产生session,只有访问jsp,servlet时才会产生,每次用户访问服务器一次,服务器回更新session的最后访问时间,修改默认的生命周期只能在xml里边修改,《session-config>《session-timeout></ timeout >60《/session-config>,session的超时时间是setInactiveInterval修改,强制失效是invalid方法,session需要使用cookie做标识做成jsessionid。Set attribute(String attribute,javabean)设置session属性。Invalidate()销毁,应用场景是注销。 -
url重写技术
把想要的参数通过写在url中带过去。 -
jsp是什么,执行过程,属性呢
Java server page的缩写,好处就是java和html写一块,便于维护
第一次访问jsp时候,jsp被翻译成servlet1.page指令
属性:
1.import 导入jar包
anguage嵌入的语言
contentType response的响应类型
pageEncoding当前jsp的内部包含的编码格式
errorpage 错误界面 页面出错的时候跳转
iserrorpage 当前页面是处理错误的页面
2.include 包含可以将jsp包含到另外一个jsp页面之中
《%@ include file=“”%》
3.taglib 标签引用指令
《%@ taglib uri=“”%》 -
jsp九大常用对象**
Pagecontext:管理页面属性
Request:请求对象
Session:每个用户访问创建的会话
Application:保存用户信息,代码片段的运行环境,共享的内置对象
Response:响应对象
Out:向客户端输出数据
Config:代码片段配置对象,表示servlet的配置
Exception:处理jsp文件执行时发生的错误和异常
Page:相当于this,处理jsp王爷,十object的一个实例 -
如何使数据从一个jsp到另外一个jsp
Setattribute和getattribute,pageContext.findAttribute(“name”);获得从pagecontext,request,session,application中从小到大获取值。 -
pagecontext亮点在哪?
可以获得其他八大内置对象:
Pagecontext.Getout, Pagecontext.Getpage, Pagecontext.Getrequest, Pagecontext.Getresponse, Pagecontext.Getsession, Pagecontext.Geservletcontext, Pagecontext.Getservletconfig, Pagecontext.Getexception。 -
servlet是啥和jsp的区别与特点
Servlet代码就是使用Java语言在程序端写出来的,servlet继承的接口是Httpservlet。jsp本质就是servlet,但是jsp界面提供了一个Java代码编写,一般前台使用jsp,后台使用servlet。 -
servlet的生命周期
第一次访问servlet初始化init,startonload数值越小顺序越优先。继承了接口以后重写Httpservlet中的Service方法,里边有doget以及dopost。 -
EL表达式与jQuery区别
没有关系,虽然都用了$符号,jQuery是对JavaScript修饰,本质是js的封装,而el表达式是jsp表达式输出的简写,EL表达式就是<%=pagecontext.findAttribute()%> -
EL表达式的11种内置对象
pageScope,requestScope,sessionScope,applicationScope,param,paramValues,header,headerValues,initParam,cookie,pageContext. -
spring的切面aop面向切面编程
相同的代码放在一块,方便多次使用,解决了代码冗余的问题,例如解决乱码问题,Filter的使用。 -
过滤器Filter 应用场景(Decorator装饰者模式/动态代理模式)
可以解决乱码问提,经过滤器1,过滤器2,访问servlet,然后从过滤器2,过滤器1原路返回,这就是fileter的工作原理,过滤器可以配置多个,当然也可以只访问过滤器1,而不经过过滤器2,过滤器可以调节,生命周期与服务器一样,aop面向切面功能,公共代码的提取。 -
过滤器中doFilter以及过滤器链
Request,response,filterchain(过滤器链:可以由一个filter跳到另外一个filter)。Filter是一个可插拔的,记得修改filter的注解,否则进不去@WebFilter(filterName="/TestFilter4",urlPatterns="/*")。注解有个默认权重,字母小的在前边,使用filterConfig获取servletConfig. -
监听器对象以及内容和作用listener
对象:application,只有一个。Session,每一个对话。Request,每个客户请求。
内容:创建,销毁,属性改变事件。
作用:可以在事件发生前,发生后进行处理。
应用场景:统计在线人数和在线用户session,访问量,启动初始化信息。 -
监听器的注册与监听事件
Xml的配置注册:
<listener>
< listener -class>com.neusoft.listener.ListnerTest1</ listener -class >
< /listener >
Lifcycle和attribute,生命周期和session的增加,修改与删除。
Binding绑定与session,将JavaBean通过setattribute塞入session中的时候发生valueBound事件,bean实现HttpSessionBindingListener接口,
HttpSessionActivationListener监听session对象的序列化和反序列化。添加一个context,再内部添加manager其中maxIdleSwap=“1”是代表失效时间是一分钟。
-
什么是Ajax
无需重新加载整个页面的情况下,更新部分网页的技术,浏览器不同Ajax 对象不同。
-
Ajax五步骤
-
var ajax=new XMLHttpRequest(); //2.使用open方法设置交互信息/ ajax.open("get", "AjaxLoginServlet?username='ajaxname'"); //3.设置发送的数据//3.设置发送的数据 ajax.send();ajax.send(); //4.注册事件,监听当前的ajax是否改变//4.注册事件,监听当前的ajax是否改变 ajax.onreadysyayechange=function () { if(ajax.readistate==4&&ajax.status==200){ var responsevalue=ajax.responseText; //更新事件 console.log(responsevalue); if(responsevalue==1){ location.href="main.jsp"; }else{ eval(responsevalue); //alert("用户名密码错误!"); } }
-
request请求转发与重定向区别
访问次数上,请求请求转发一次,重定向请求两次,转发只能在服务器内部转发,重定向可以向服务器外部重定向,请求转发不改变URL,重定向改变了,重定向向前台传送了302status,请求转发带参数,重定向使用session装入数据。
-
Filter解析器与静/动态包含
<dispatcher>:request,forward,include,error</ dispatcher >
写在<filter-mapping>后边,include页面的包含,一个网页放在另外一个网页之中算是包含,静态包含和动态包含。
静态包含<%@ include file=””>先包含,在编译
动态包含<jsp: include page=”” flush=”true”>先编译,在包含
-
JSP加载顺序
Listener—》filter—》servlet -
前台分页
数据查询到前台,在前台进行数据控制,一页显示几条,页面放到当前缓冲中,优点:换页加载速度快,缺点:数据量比较大或者经常更改,可能出现数据出现错误,没有及时更新 -
后台分页
优点:前台显示信息因为即用即查所以准确,缺点:数据量比较大时查询的比较慢,从硬盘中取数据。两者可以同时使用,一次查询二十条放入缓存,显示十条,在点击下一页的时候在查询二十条放入缓存。
在Hibernate中可以不用写分页语句,是对对象进行操作。
Oracle与mysql分页:rownum与limit -
cookie与session区别
Session有默认生命周期,30min从tomcate的xml中获取,session有jsessionid,通过cookie传送。禁止cookie,使用url重写技术,讲jession放入url中。 -
web Service (wsdl)
一个服务器向另外一个服务器传送xml,另一个服务器进行xml解析,得出需要传输的数据。 -
# . > 空格 * hover ,
#是id选择器,.是类选择器,>是子选择器,空格是后代选择器,*通用,hover伪类选择器,,是分组选择器 -
jQuery采用了三层封装
jQuery采用了三层封装:最底层方法是: .get()和 .getScript()和$.getJSON()方法。.load()有三个参数,url,date,callback。 -
json是啥
是一种取代xml的数据结构,比xml更小,所以网络传输数据减少更多流量加快速度。 -
json解析工具
Fastjson,gson,jsonlib需要jar包,传统json
JSONObject j1=new JSONObject(); -
maven生命周期
Clean:
Default:
Site:生成目录网站,建立和发布项目站点,拥有独立的生命周期