javaweb面试题总结

面试题:
1.什么是MVC,使用MVC的好处是什么?
MVC设计模式的引入
在项目中,客户通过浏览器或者app等进行数据的操作,操作有处理发送请求,业务逻辑处理以及访问数据库,这三个功能我们是可以放到一块使用的,但是如果放在一起,代码便会很臃肿,不利于维护,于是便出现了代码分层思想,把代码按照功能分为三层,即模型层(Model)、显示层(View)、控制层(Controller),这种代码的组织架构就叫MVC模式.

模型层(Model):在模型层中又可以分为两层,即Service层和Dao层,这两层的主要功能是:

Service层:负责一些业务处理,比如说:获取数据库连接,关闭数据库连接,事务回滚或者一些复杂的逻辑业务处理
1
Dao层:(Database Accept Object) 负责访问数据库,对数据的操作,获取结果集,将结果集中的数据装到OV(Object Value)对象中,之后再返回给Service在这里插入图片描述

2.请求转发与重定向的区别?
转发请求一次 访问的地址是第一次请求的url
req.getRequestDispatcher("/show").forward(req,resp);
相当于客户端向服务器端发送一次请求 要加上 /
url地址是第一次发送请求的地址 http://localhost:8080/ManagerSystem/add 不是转发的目标资源地址 意味着每刷新一次就会执行一次第一次地址对应的Servlet
请求转发只能诸法站内的资源,不能转发站外的资源
重定向:相当于客户端向服务器端发送了两次请求 A向B借钱 B没有 A又向C去借
resp.sendRedirect(req.getContextPath()+"/show"); //站内资源
resp.sendRedirect(“http://www.baidu.com”); //站外资源
url地址最终目标资源 http://localhost:8080/ManagerSystem/show

3.如何获取请求参数?
“获取application context的路径”+req.getContextPath()
“获取到请求参数”+req.getParameter("")
“获取到请求的uri地址”+req.getRequestURI()

4.如何在服务器端保存数据以及获取数据?
req.setAttarbut(key,value)
req.getAttarbuit(key) 用相应的类型接受

常用的错误代码

404 找不到网页
500 服务器出错
405 请求方式不对

如何简化JSP文件?可以使用JSTL+EL表达式来简化我们的JSP页面

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能

JSTL 库安装 :下载之后要将这个文件放在 Web-INFO 下的lib文件中

${}表示EL表达式

JavaWeb中的会话技术

什么是session?
session是服务器端的一种会话技术,服务器在运行的时候会为每一个用户的数据创建一个单独的session对象。
Session可以为用户的浏览器所共享

Session的核心:HttpSession接口,他可以保存保存服务端会话
可以通过HttpSession session=req.getSession;来获取会话。

常用方法:
getId():可以通过此方法来获取到Session的编号id
void invalidate():可以通过此方法来销毁Session对象
setAttribute(java.lang.String name, java.lang.Object value) 向Session中保存数据
getAttribute(java.lang.String name) 从session中根据key获取数据
removeAttribute(java.lang.String name)从Session中清除数据 例如:退出登录

面试:session的执行原理
1.第一次会创建一个session对象,它会给session对象分配一个唯一的ID JSESSIONID
2.要将JSESSIONID以Cookie发送给浏览器来保存
3.第二次访问服务器的时候,浏览器会携带JSESSIONID来访问服务器
4.服务器要得到JSESSIONID,在服务器端的内存搜索是否存在对应的Session对象

注意:保存在Session对象中的数据会被多个Servlet和JSP所共享,只要浏览器不关闭,保存在session中的数据会一直有效

什么是会话:客户端与服务器的数据的传输(登录、购物车)

什么是管理:也就是数据的管理
常用的会话技术:Cookie:在客户端来保存数据 Session:数据还在服务器端

Cookie类主要用于存储会话数据

1.可以通过构造器来创建一个Cookie对象 Cookie(java.lang.String name, java.lang.String value)

2.可以通过setMaxAge(int expiry)来设置Cookie的有效时间(以秒为单位) 246060
2.1正数:表示cookie的数据会保存到浏览器缓存到硬盘中
2.2负数:表示cookie的数据会保存在浏览器的内存中,浏览器关闭,cookie就失效了
2.3 0 :表示会删除同名的cookie数据
3.发送Cookie到浏览器端来保存 HttpServletResponse对象中的方法 addCookie(Cookie cookie)

4.服务器端接收Cookie 可以通过HttpServletRequest 对象中的方法接受 getCookies() 返回值类型Cookie[]

Cookie的执行原理
1.在服务器创建一个Cookie对象,要将数据保存到Cookie会话中
2.服务器会将cookie数据保存到浏览器
3.浏览器下一次访问服务器的时候会携带cookie的信息
4.服务器可以获取到客户端的cookie数据
5.cookie的数据类型只能保存非中文字符串类型,一个浏览器可以保存300个cookie数据,每个cookie的大小最大为i4kb

分页:
select * from table limit (curPage-1)*pageSize,pageSize; select * from table limit 0,10
select * from table limit 0,10; 如果查询第一页的10条数据 1-10条
select * from table limit 10,10; 如果查询第二页的10条数据 11-20条
select * from table limit 20,10; 如果查询第二页的10条数据 21-30条

说明 limit 分页公式 curPage 是当前第几页 pageSize是一页多少条记录

分页的方式:
1.前台分页:从数据库中一次查询所有的数据,然后再进行分页。如果数据量太大,这种分页效率低。
2.后台分页:(数据库分页) 缺点频繁连接数据库
Oracle分页
SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21

3.存储过程:每一个数据库 存储过程都不同

分页的原理
1.计算总的记录数
2.计算总页数
3.查询某一个区间的数据 例如 查询第一条到第十条的数据

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值