通过不断面试和笔试,我逐渐发现基础的重要性,万丈高楼平地起,我又重新回来学习一下JSP+servlet基础了,很多基础没弄明白,后面框架就一脸蒙蔽,只能死记硬背。
什么是jsp?
其实本质就是html嵌套java代码。是servlet的拓展。
域名解析流程:
:1.先从本地查找->从万维网或其他查找(根域名)->返回一个小区域域名->重复返回缩小范围的域名并且访问->最终找到。详情见
https://blog.csdn.net/yangfanacc/article/details/42099913
get方法和post方法的区别:
首先get和post都是http与服务器交互的方式。
a. get方式 在地址栏显示 请求信息 (但是地址栏能够容纳的 信息有限,4-5KB;post不会显示
b. 文件上传操作,必须是post
c.get请求会被浏览器主动cache,而post不会,除非手动设置。
d.get请求只能进行url编码,而post支持多种编码方式。
e.get请求参数会被完整保留在浏览器历史记录里,而post中的参数不会被保留。
f.get只接受ASCII字符的参数的数据类型,而post没有限制
g.get效率更高,因此比post更加常用。
下文用非常通俗易懂的方式解释了两种方法的区别,很有意思 https://www.cnblogs.com/logsharing/p/8448446.html
JSP的九大内置对象:
内置对象名 类型
request HttpServletRequest
response HttpServletResponse
config ServletConfig
application ServletContext
session HttpSession
exception Throwable
page Object(this)
out JspWriter
pageContext PageContext
页面跳转的两种方式:
1.response重定向response.sendRedirect("xxx.jsp");
2.request页面跳转request.getRequestDispacher("xxx.jsp").forward(request,response);
两者的区别:
请求转发 重定向
地址栏是否改变 不变 改变
是否保留第一次 保留 不保留 --4种范围对象
请求时的数据
请求的次数 1 2
跳转发生的位置 服务端 客户端发出的第二次跳转
cookie 和 session的区别:
cookie session
保存位置: 客户端 服务端
安全性: 较不安全 较安全
保存的内容: String Object(getAttribute返回Object)
pageContext,request,session,appliation 四种范围对象
(小->大)
pageContext JSP页面容器(page对象); 当前页面有效
request 请求对象 同一次请求有效
session 会话对象 同一次会话有效
appliation 全局对象 全局有效(整个项目有效)
以上4个对象共有的方法:
Object getAttribute(String name):根据属性名,或者属性值(注意是返回的是Object类型)
void setAttribute(String name,Object obj) :设置属性值(新增,修改)
setAttribute("a","b") ;//如果a对象之前不存在,则新建一个a对象 ;
如果a之前已经存在,则将a的值改为b
void removeAttribute(String name):根据属性名,删除对象
a.pageContext 当前页面有效 (页面跳转后无效)
b.request 同一次请求有效;其他请求无效 (请求转发后有效;重定向后无效)
c.session 同一次会话有效 (无论怎么跳转,都有效;关闭/切换浏览器后无效 ; 从 登陆->退出 之间 全部有效)
d.application 全局变量;整个项目运行期间 都有效 (切换浏览器 仍然有效);关闭服务、其他项目 无效
->多个项目共享、重启后仍然有效 :JNDI
1.以上的4个范围对象,通过 setAttribute()赋值,通过getAttribute()取值;
2.以上范围对象,尽量使用最小的范围。因为 对象的范围越大,造成的性能损耗越大。
JavaBean
1.概念:
就是一个Java类,其定义:满足以下两点 ,就可以称为JavaBean
a.public 修饰的类 ,含public 无参构造
b.所有属性(如果有) 都是private,并且提供set/get (如果boolean 则get 可以替换成is)
2.作用:a.减轻的jsp复杂度 b.提高代码复用
3.种类:
使用层面,Java分为2大类:
a.封装业务逻辑的JavaBean (LoginDao.java封装了登录逻辑) 逻辑
可以将jsp中的JDBC代码,封装到Login.java类中 (Login.java)
b.封装数据的JavaBean (实体类,Student.java Person.java ) 数据
对应于数据库中的一张表
Login login = new Login(uname,upwd) ;//即用Login对象 封装了2个数据(用户名 和密码)
统一字符集编码
1.编码分类:
设置JSP文件的编码:jsp -> Java(翻译成Java文件时用的编码)