JAVA面试之JavaWeb部分(一)

1、 forward 和 redirect 的区别

  • forward是服务器的转向,就是请求转发, redirect是客户端的跳转, 就是重定向
  • forward浏览器的地址不会发生改变
  • forward是一次请求中完成。redirect是重新发起请求
请求转发的特点:

1》只请求一次,而且属于内部跳转
2》地址栏不会发生变化
3》不允许访问外部资源
4》绝对路径的/代表的是根目录之后
5》效率偏高
请求转发的语法:

request.getRequestDispacher(地址).forward(请求对象,响应对象)

重定向的特点:

1》整个过程发出两次请求
2》地址栏会发生变化,并跳转到最新的页面,地址栏也是最新页面的地址
3》允许访问外部资源,因为服务器已经响应回了浏览器,而且浏览器也发出了新的请求,由于HTTP是无状态的所以两次请求没有联系,第二次请求可以随意去任何网页
4》绝对路径的/代表的是端口号之后
5》效率偏低,因为有两次请求,相对来说效率低
重定向语法:
response.sendRedirect(地址)

2、JSP 和 Servlet的异同(传送门

在这里插入图片描述

Servlet的由来

省略

JSP的由来

实际上它也是从Servlet继承而来。只不过它在Servlet当中又添加/修改了一些方法,作了新的封装。具体到Tomcat Web应用服务器中,它通过一个多重继承,分别从Java的HttpJspPage和HttpServlet两个类那里继承和实现一些方法,然后封装一个叫做HttpJspBase的类从而实现了一个通用化的JSP类,用户在开发自己的JSP时,只需要从HttpJspBase继承一个自己的类(如图中Hello_jsp类),然后根据需要去实现相应的方法即可。

发展史和联系

JSP是Servlet的扩展,在没有JSP之前,就已经出现了Servlet技术。Servlet是利用输出流动态生成HTML页面,包括每一个HTML标签和每个在HTML页面中出现的内容。
每一个JSP页面都会转换成Servlet,可以在Tomcat的apache-tomcat-7.0.37\work\Catalina\localhost\myapp\org\apache\jsp目录下找到如下文件:indexd.java和index.class。 这是jsp文件对应生成的Servlet的java和字节码.class文件

3、JSP的九大内置对象,七大动作指令,四个作用域和三个编译指令 传送门

Application,Config,Exception,Out,PageContent,Page,Request,Respsonse,Sesstion

常用的有Request和response的一个页面重定向方法(上面的第一点)

request有几个常用的方法:
  • request.setAttribute(String key, Object obj) :通过键值对来保存数据,可以通过
  • request.getAttribute(String name)来获取保存的数据。
  • request.getParameter(String name):根据标签的name属性取得标签value的值,一种值传递方式
  • request.setCharacterEncoding(“字符集”):设置字符集
  • request.getRequestDispatcher(“index.jsp”).forward(request, response):表示请求转发,进行页面跳转,跳转到某个jsp页面,** 可传值**
response的一个常用的方法:
  • response.sendRedirect(“main.jsp”):表示页面的重定向,但是不能传值,上个页面的保存的数据在经过response的页面重定向后无法取到数据,所以它只是起一个页面跳转的功能
JSP的四大作用域
  • Application: 表示的是整个浏览器的范围只要服务器没有关闭,它就一直存在比如网站的统计。
  • Sesstion: 表示建立一次会话,在关闭浏览器之前会话一直存在
  • Page: 当前页面,跳出当前页面之后就失效
  • request: 表示一次请求,在请求的范围内有效。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值