1):Jsp的重定向和转发的流程有什么区别

  重定向是客户端行为,转发是服务器端行为

  重定向时服务器产生两次请求,转发产生一次请求,重定向时可以转发到项目以外的任何网址,转发只能在当前项目里转发

  重定向会导致request对象信息丢失。转发则不会

  转发的url不会变,request.getRequestDispatch()。forward()

  重定向的url会改变,response.getRedirect();

  重定向(response)不能访问 WEB-INFO 下的页面,而转发(request)可以

2):Jsp和servlet的区别

  1、JSP在本质上就是SERVLET,但是两者的创建方式不一样.

  2、Servlet完全是JAVA程序代码构成,擅长于流程控制和事务处理,通过Servlet来生成动态网页很不直观.

  3、JSP由HTML代码和JSP标签构成,可以方便地编写动态网页

        因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.

  1、JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。

  2、JSP编译后是“类servlet”。

  3、Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP是Java和HTML组合成一个扩展名为.jsp的文件。

  4、JSP侧重于视图,Servlet主要用于控制逻辑。

3):Jsp的九大对象,七大动作,三大指令

四大作用域的详解Demo

1、out :向客户端输出数据,字节流,如:out.print(“data”);

2、request :接受客户端的http请求。

3、response: 响应客户的请求,重定向客户转任意界面。

4、session :用于保存用户信息,跟踪用户行为,当前打开的浏览器内,多个页面共享数据,session对象指的是客户端与服务器的一次会话,

   从客户连接服务器的一个webApplication开始,直到客户端与服务器断开连接为止,它是HttpSession类的实例,

   setAttribute(String name,Object obj):设置属性名为name 属性值为obj,getAttribute(String  name) 得到属性值。

5、application:对象 实现是用户间数据的共享,可存放全局变量,它开始于服务器的启动, 直到服务器的关闭,

   在此期间,此对象将一直存在,这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作,

   在任何地方对此对象属性的操作,都将影响到其他用户对此的访问,服务器的启动和关闭决定了application对象的生命,它是ServletContext类的实例。

6、page :代表jsp这个实体本身,即当前页面有效,相当于java中的this,数据范围:page<session<application

7、exception :运行时异常,在会发生异常的页面加入指令:<%@ page errorPage=“处理错误的页面.jsp” %> 在处理异常的页面写入:<%@ page inErrorPage=“true”%>

8、pageContext :pageContext 对象提供了对jsp页面内所有的对象及名字空间的访问,也就是说它可以访问到本页所在的session,也可以取本页所在的application 的某一属性值,

   它相当于页面中所有功能的集大成者。它的本类名也叫pageContext。

9、config jsp对应的servlet的配置,可以得到web.xml 中的初始化参数。

jsp七大动作:

1、include: 动态包含 它会总是检查所含文件中的变化,适合用于包含动态页面,并且可以带参数,flush属性:用true,表示页面可刷新,默认为false

2、useBean :<jsp:useBean id=“对象名” class=“包名.类名” scope=“作用范围(request/page/application/session)”/> 作用域默认为page(本页面有效)。

3、getProperty :从对象中取出属性值:<jsp:getProperty name=“javaBean对象” property=“javaBean对象属性名”/>

4、setProperty: 为对象设置属性值:<jsp:setProperty name=“javaBean对象” property=“javaBean对象属性名” value=http://my.csdn.net/“值”/>

   为对象设置属性值:<jsp:setProperty property=“javaBean对象属性名” name=“javaBean对象” param=“username”/>

5、param :传递参数 到达跳转页面可以通过 request.getParameter(“参数名”)方式取出参数值 <jsp:include page=“转向页面的url” > <jsp:param name=“参数名1” value=“http://my.csdn.net"参数值1” >

6、forward :跳转页面 <jsp:forward page=“login.jsp”/>

7、plugin jsp:plugin 用于指定在客户端运行的插件

jsp三大指令:

1、@page 指定编码 <%@ page language=“java” contenType=“text/html;charset=utf-8” pageEncoding=“utf-8” >    @ page 导包 <%@ page import="java.util.* "%>

2、include 静态包含 <%@ include file=“include.jsp”%>

3、taglib 是用来在当前jsp页面中导入第三方的标签库 <%@ taglib prefix=“c” url=“http://java.sun.com/jsp/jstl/core” %>

   prefix:指定标签前缀 (可以随意起名) url:指定第三方标签库的url(唯一标识) 当然 需要先把第三方标签库所需jar包放到类路径中。

4):接口 与 抽象类的 区别

接口:

1、定义 接口 的关键字为:interface

2、子类使用 implements 来实现接口

3、接口不能有构造

4、接口默认修饰是 public (也只能是 public  属性及方法也一样)

5、接口没有 main 方法

6、接口只能继承一个  或 实现多个其它接口

7、接口中的属性默认修饰  public  static  final  常量

8、接口中的方法必须是抽象了(默认可以不加 abstract)

9、实现类需要全部实现接口中的方法

抽象类:

1、定义 抽象类的关键字为 Abstract

2、抽象类不能被实例化(除了不能实例化  其他没什么太大区别)

3、抽象类可以有构造器

4、可以有默认实现

5、抽象方法可以有 public protected  default 修饰

6、可以有 main  方法

7、可以继承一个类  实现多个接口

8、抽象方法 一定在 抽象类中

9、抽象类的子类不能重写所有抽象方法,那么子类还是一个抽象类。

10、final 定义的普通方法 子类无法重写

11、final  与 abstract 不能同时修饰

5):list map set 三个接口,存取元素时,各有什么特点

list:(有序,可重复)

  list 里存放的对象是有序的,同时也是可以重复的,List 关注的是 索引,拥有一系列和索引相关的方法,查询速度快。

  因为 对List 集合进行 插入或删除数据时,会伴随数据的移动,所以插入删除数据效率低。

Set:(无序,不能重复)

  Set 存放的对象是无序的,不可重复,集合中的对象不按特定的方法排序,只是简单把对象放入集合中

Map:(键值对,键唯一、值不唯一)

  map 存储方式为 键值对、键不可重复,值可以。

  根据键获取值,对map集合遍历时先得到键的 set集合,对set集合进行便利,得到对应的值。

对比如下:

  是否有序 是否允许重复元素
Collection
List
Set:AbstractSet
Set:HashSet
Set:TreeSet
Map:Abstract value 可以重复
Map:HashMap value 可以重复
Map:TreeMap 是(二叉树排序)
     

6):Get  与 POST 的区别:

1、GET在浏览器回退时是无害的,而POST会再次提交请求。

2、GET请求会被浏览器主动cache,而POST不会,除非手动设置。

3、GET请求只能进行ASCII编码,而POST支持多种编码方式。

4、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

5、GET请求在URL中传送的参数是有长度限制的(2048字符),而POST没有。

6、对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

7、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

8、GET参数通过URL传递,POST放在Request body中。

9、get 产生一个tcp 数据包,浏览器会把http header 和data 一并发送出去,服务器响应200(返回数据)

10、post 产生两个tcp 数据包,浏览器会先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200(返回数据)

http://www.w3school.com.cn/tags/html_ref_httpmethods.asp

7):常见Http协议状态:

200:请求正常处理

204:请求被受理但没有资源可返回

206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源

301:永久性重定向

302:临时重定向

303:与302相似,它希望客户端在请求一个URL时,能通过Get方法重定向到另一个URI上

304:发送附带条件的请求时,条件不满足时返回,与重定向无关

307:临时重定向,与302类似,只是强制要求使用Post方法

400:请求报文语法有误,服务器无法识别

401:请求需要认证

403:请求的资源禁止被访问

404:服务器无法找到对应的资源

500:服务器内部错误

503:服务器正忙

https://www.cnblogs.com/mlq2017/p/10148624.html

8):Http请求报文与响应报文格式?

https://www.cnblogs.com/CodingUniversal/p/7524088.html

 

.....................................................

分享知识-快乐自己:初中级 java 面试题宝典的更多相关文章

  1. 分享知识-快乐自己:java代码 操作 solr

    POM 文件: <!-- solr客户端 --> <dependency> <groupId>org.apache.solr</groupId> < ...

  2. 分享知识-快乐自己:Java中各种集合特点

    Java中各种集合特点: Collection[单列集合]: List(有序,可重复): ArrayList: 底层数据结构是数组,查询快,增删慢.线程不安全,效率高. Vector: 底层数据结构是 ...

  3. 分享知识-快乐自己:Java常用API总结

    1):java.io.BufferedReader类(用于从文件中读入一段字符:所属套件:java.io) 1. 构造函数BufferedReader(java.io.FileReader FileR ...

  4. 分享知识-快乐自己:Java 中 的String,StringBuilder,StringBuffer三者的区别

    这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 1):首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer &g ...

  5. 分享知识-快乐自己:java 中的访问修饰符

    1):Java中的访问修饰符: Java面向对象的基本思想之一是封装细节并且公开接口.Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节. 访问控制 ...

  6. 分享知识-快乐自己:JAVA中的 Iterator 和 Iterable 区别

    java.lang.Iterable  java.util.Iterator  Iterator是迭代器类,而Iterable是接口. 好多类都实现了Iterable接口,这样对象就可以调用itera ...

  7. 分享知识-快乐自己:Java中的经典算法之冒泡排序(Bubble Sort)

    原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后.然后比较第2个数和第3个数,将 ...

  8. Java初中级程序员面试题宝典

    Java基础部分 &与&&区别? &和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假:但是&&当第一个条件不成之后,后面的条件都 ...

  9. 115个Java面试题和答案——终极列表(下)

    第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servle ...

随机推荐

  1. JDK自带的定时任务

    import java.util.TimerTask; /** * 实现定时任务 * */ public class MyTimerTask extends TimerTask { @Override ...

  2. maven 依赖文件 pom.xml 编译 mvn compile 运行 不用mvn exec:java -Dexec.mainClass="hello.HelloWorld" 打成jar包 mvn package mvn install http://blog.csdn.net/yaya1943/article/details/48464371

    使用maven编译Java项目 http://blog.csdn.net/yaya1943/article/details/48464371  使用"mvn clean"命令清除编 ...

  3. ajax Form提交与Payload提交

    后端处理前端提交的数据时,既可以使用Form解析,也可以使用JSON解析Payload字符串. Form解析可以直接从Request对象中获取请求参数,这样对象转换与处理相对容易,但在大片JSON数据 ...

  4. Java线程面试题:子线程先运行 2 次,然后主线程运行 4 次,如此反复运行 3 次

    package thread; /** * 需求:线程编程:子线程先运行 2 次,然后主线程运行 4 次,如此反复运行 3 次. * @author zhongfg * @date 2015-06-1 ...

  5. 基于jquery的bootstrap在线文本编辑器插件Summernote (转)

    Summernote是一个基于jquery的bootstrap超级简单WYSIWYG在线编辑器.Summernote非常的轻量级,大小只有30KB,支持Safari,Chrome,Firefox.Op ...

  6. (转)Java并发编程:阻塞队列

    原文地址: http://www.cnblogs.com/dolphin0520/p/3932906.html 一.几种主要的阻塞队列 自从Java 1.5之后,在java.util.concurre ...

  7. python多任务处理

    多任务解析 什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务. 现在,多核CPU已经非常普及了,但是,即使过去的单核CPU,也可以执行 多任务.由于CPU执行代码都是顺序执行的,那么,单 ...

  8. They're much closer in spirit to how our brains work than feedforward networks.

    http://neuralnetworksanddeeplearning.com/chap1.html Up to now, we've been discussing neural networks ...

  9. hibernate Session的CRUD操作

    使用Session里面的方法进行CRUD操作 (1) 增加 save 方法 (2) 查找 get 方法(根据id查) (3) 修改 update 方法 (4) 删除 delete 方法 1.增加 /* ...

  10. Js自定义异常

    function MyError(msg){ this.name="MyError"; this.message = msg || "自定义异常的默认消息";} ...