JSP常见知识点

 

1、转发和重定向的区别是什么

转发是在项目内部资源页面跳转,转发是继续传递请求(效率高),转发是通过request实现,转发后地址栏不改变

    request.getRequestDispatcher(“页面名”).forward(request,response);

重定向可以跳转到任何页面,重定向是新的请求(效率不如转发),重定向是通过response实现,地址栏会改变

    response.sendRedirect(“页面名”);

 

request.setAttribute(“名字”,);

response.sendRedirect(“xxx.jsp”);

注意:下一个页面无法取出request中存储的数据,因为是新的请求

 

2、http提交请求有哪两种方式,区别是什么?

getpost

区别:get可以在地址栏显示传递的数据(不安全),get有长度限制,只能传递文本数据,效率高于post

 

Post传递的数据不会在地址栏显示(安全),post无长度限制,能传递任何数据,效率低于get

 

Servlet中接收请求后一定会执行的方法是以下哪个(C

A.doGet()    B.doPost()    C.service()    D.init()

如果一个servlet冲存在doGetdoPostservice三个方法,那么只会执行service

 

3、Spring的核心思想有哪两个技术点

Spring核心思想:IOCAOP

IOC:控制反转/依赖注入(DI),将对象之间的关系在编码外的配置文件中进行配置

AOP:面向切面编程设计,将项目中的共性问题抽离出来集中解决

 

4、Sql中声明变量的语法是什么?赋值有哪两种方式

   declare @变量名 类型

Delare @name varchar(30)

Set @name = ‘jack’    赋予固定值,同时只能给1个变量赋值

Select @name = ‘jack’  可以给多个变量赋值,一般是将查询的结果赋值给某变量,如:

Declare @myCount int = 0;

Select @myCount=count(*) from

 

5、ORM是什么?Hibernate是一种什么技术

   ORM:对象关系映射 将类和数据库的表进行映射关联,操作类对象时,自动根据映射去产生sql语句及jdbc代码

   Hibernate是一种实现了ORM思想,封装了jdbc的一种数据库操作技术

 

6、Struts2的控制器分哪两种?

   1)核心控制器(StrutsPreparedAndExecuteFilter

 它是一个过滤器,负责处理所有的请求

   2)业务控制器(平时自己建立的XXXXAction)

 

    Struts2中的每个请求都会创建对应的Action实例

 

7、Struts2Action如何完成配置(写出大概的框架例子即可)

   <package name=”包名” extends=”struts-default” namespace=”访问的路径”>

       <action name=”访问名” class=”包名.类名”>

             <result name=”名字” type=””>页面</result>

       </action>

   </package>

页面返回的类型:

Dispatcher(默认,转发)

Redirect(重定向)

redirectAction(重定向到其他Action

 

8、IOC是什么?代表什么意思,有哪两种注入方式?

IOC:控制反转/依赖注入(DI),将对象之间的关系在编码外的配置文件中进行配置(降低耦合)

 

Set注入

构造注入(时机更早一些)

<bean id=”emp” class=”com.scme.Employee”>

     <property name=”age” value=”20” />

</bean>

以上property说明,Employee类中一定有一个setAge方法

 

9、AOP是什么意思,代表什么意思?有哪几种通知类型

 

AOP:面向切面编程设计,将项目中的共性问题抽离出来集中解决

Aop是面向对象的补充扩展,不是替代。Aop是横向的设计,面向对象是纵向

前置通知

后置通知

环绕通知

异常通知(拦截目标方法的执行)

 

AOP主要是通过代理设计模式实现,代理有两种方式:

1)>jdk动态代理(默认)

2)>cglib类代理方式

 

10、Hibernate中的对象有哪几种生命周期状态

瞬时(临时):new的对象

持久化:调用saveloadget等方法

游离:session.close  session.clear   session.evict

 

11、SSH中几个常用bean的注入方式是什么?如DataSource注入给谁。

DataSource-->sessionFactory-->Dao--->Service--->Action

 

当我们的Dao继承HibernateDaoSupport后,那么必须要注入sessionFactory

 

12、<jsp:useBean是什么意思,完成一个完整的写法例子,它的存储范围有哪几个

<jsp:useBean id=”对象名” class=”包名.类名” scope=”request” />

等价于在jsp中:

<%

类名 对象名 = new 类名();

%>

Scope代表该对象存在的范围

   Page      --当前页面范围有效

   Request   --转发后的下一个页面有效

   Session   --整个会话范围

   Application   ---整个项目范围(全局、最大)<网页的计数器>

 

13、Hibernatecascade是什么意思,有哪几个取值

Cascade级联操作

取值:all   save-update   delete   none

14、Hibernate中延迟加载的属性是什么?=true=false什么意思,默认是什么

     Lazy=”true”  延迟  -------默认

     Lazy=”false”  不延迟(立即)

 

15、HibernatesetFirstResultsetMaxResult是什么意思

setFirstResult(数字)---从第几条开始取,下标从0开始

setMaxResult(数字)---取多少条记录

setFirstResult(4),  从第5条开始取

setMaxResult(8),  8条记录

 

16、Pagerequestsessionapplication的存储作用域分别是什么

          Page      --当前页面范围有效

            Request   --转发后的下一个页面有效

            Session   --整个会话范围(不同的客户端有不同的session

            Application   ---整个项目范围(全局、最大)<网页的计数器> 不同的项目有不同的application

    

17、Struts2中的XXXAction中如何访问requestsessionapplication对象

HttpServletRequest req = ServletActionContext.getRequest();

 

HttpSession session = req.getSession();

 

ServletContext application = ServletActionContext.getContext();

 

18、SSH中需要改变那些配置文件,分别改变那里是做什么用的?

   如监听器:在那里配置,如何配置

   Web.xml Struts2的核心控制器和监听器

   Struts.xml: 配置Struts2的属性和配置action

   applicationContext.xml:配置对象之间的依赖关系

   Hibernate.cfg.xml:配置hibernate的属性

 

   实体类.hbm.xml:实体类和数据库表的映射信息

 

19、为了规范Struts中的Action写法,一般我们会实现哪个接口或者继承哪个类

Action接口

ActionSupport

 

20、Servlet的生命周期是什么,分别在什么时候执行。

加载   --服务器启动时

实例化  ---第一次请求时

初始化(init)  ---第一次请求时

服务(service--doGet/doPost)    ---每次请求时

销毁(destroy)    ---服务器停止时

 

Servlet完成后需要在web.xml中配置其访问路径,否则无法使用

<servlet>

<servlet-name>名字</servlet-name>

<servlet-class>包名.类名</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>名字和上面对应</servlet-name>

<url-pattern>/test</url-pattern>

</servlet-mapping>

那么要进入该servlet,则请求最后要提交的就是/test,如项目名是book,那么访问为:

http://ip:端口/book/test  即可访问该servlet

 

21、Jsp的执行原理是什么?为什么第二次访问jsp页面时比第一次访问要快

   Jsp----翻译(转义)成java---编译成class,最终运行这个class,向客户端输出静态的html

   因为jsp页面第一次访问时,需要转义和编译的过程,第二次就不需要了.

22、]>javaWeb中的MVC指什么,Model1时期时控制器是谁,Model2时期时控制器是谁

 MVC:设计模式

 Model 模型 javabean(实体类、Daoservice)

 View   视图(jsp

 Controller  控制器(servlet

Model1:最早时期的javaweb应用,控制器jsp担任

Model2:目前,控制器servletAction

 

23、现在有班级表(ClassInfo)和学生表(StudentInfo),其中学生表中有一个claId为该学生所在的班级ID(外键),现在要查询出班级名称是”1403”的男同学信息,请完成sql语句(使用子查询)

Select * from StudentInfo where claId = (select claId from ClassInfo where claName = ‘1403’) and stuSex = ‘

注释:1403是班级的名称,只在班级表中,学生表中只有班级的id,并非班级名称。

 

24、Hibernate是一个对象关系映射框架,它是如何映射的(什么对应什么)?

----

属性----

对象-----行记录

25、sessionFactory是一个重量级还是轻量级的对象,一般项目中创建几个?

     重量级对象,一个项目中一个即可

     Ssh中,由spring负责创建它,LocalSessionFatoryBean

 

26、Hibernateinverse是什么意思,一般设置在哪个标签上,设置为什么值的时候效率高

inverse代表关系中谁作为主控方

一般设置在1方的<set标签上,设置为true的时候代表对方(多方)为主控方,效率高

 

27、Hibernate.cfg.xml是配置什么的?实体和表的映射信息配置在哪个配置文件中

配置hibernate的一些全局属性,如数据库连接、方言dialectshow_sql

 

实体和表的映射信息存储在各自的 xxxx.hbm.xml文件中

 

28、Struts2action请求处理方法一般返回的字符串,该字符串和那里的配置对应。它默认的返回类型是什么?有哪几种返回方式

struts.xml中的<result name=”xxx” 中进行配置

默认是转发

Dispatcher

Redirect

redirectAction

 

29、如果jsp页面要导入标签库,则需要使用的指令是?其中uriprefix代表什么意思

   <%@ taglib uri=”标签的地址” prefix=”前缀” %>

 C标签:

<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>

Struts标签:

<%@ taglib uri=”/struts-tags” prefix=”s” %>

 

30、Struts2action是单例的还是每次请求都会创建action对象

    Action是每次请求都会创建action对象

Struts1action是单例的

Servlet也是单例的

31、Ajax 是一种什么技术,其中xmlHttpRequest的状态值有哪几种,分别是什么时候变化。在服务器端返回xml数据时,如何获取返回的信息xmlHttpRequest.responseXXXX什么获取

   Ajax是一种页面无刷新技术

   xmlHttpRequest负责整个ajax中的通信,发送请求接收数据

   readyState5个状态值:

   0  刚创建

   1  准备发送

   2  已发送

   3  接收数据中

   4  接收完毕

 

32、http返回的状态吗分别代表什么意思

   404--------资源找不到

   200---------处理成功

   500---------服务器报错

33、Webservice使用什么协议通信

SOAP协议

Webservice中包含了:xml/xsd  soap   wsdl

 

34、http访问时的默认端口号是什么?Tomcat的默认端口号是什么,可以改变吗?Sqlserver的默认端口号是什么?

80端口

Tomcat默认是:8080

Sqlserver默认端口:1433

 

35、客户端禁用Cookie时,如何实现会话跟踪

url重写

 

36、SessionCookie分别存储在那里?

Session是存储在服务器端的信息

Cookie是存储在客户端

 

37、OGNLstruts2访问数据的语法,其中OGNL的根是什么

     ValueStack

     OGNL访问数据时都要加 #

 

38、actionsession是从哪里获取出来的,request如何获取

HttpServletRequest request =ServletActionContext.getRequest();

 

HttpSession session = request.getSession();//如果没有session则创建一个

 

HttpSession session = request.getSession(false);//如果没有session则返回null

 

Tomcatsession默认存活的时间:30分钟

可以在tomcatconf中的配置文件中改成存活时间

也可以直接调用session

session.setMaxAge(时间);-----

 

39、下列代码能够在下一个jsp页面中取出数据吗,为什么

 

request.setAttribute(“name”,”zhang”);

response.sendRedirect(“http://localhost:8080/servlet/MyServlt”);

 

    下一个jsp是否能够取出request中存储的name属性

  答:不能取出,因为重定向是一个新的请求

 

40、servlet中如何获取表单提交请求中的数据,如文本框的数据,再如获取多个名字相同的checkbox中的值

String n = request.getParameter(“name”);

String[] as = requset.getParameterValues(“名字”);

 

41、C标签如何循环集合中的数据,写出一个简单的架构即可。Strtus2标签如何循环

<c:forEach items=”${集合}” var=”对象名” varStatus=”状态信息” >

 

</c:forEach>

 

<s:iterator value=”#attr.集合名” id=”对象名” status=”状态信息”>

 

</s:iterator>

 

42、Hibernate中的session常用的方法有哪些,作用是干什么

     Session.save   保存对象

     session.saveOrUpdate  --增加或修改(根据对象的主键id

     Session.update

     Session.get

     Session.load

     Session.delete

     session.close

 

43、Hibernate中通过getload都可以根据id查询一个对象,区别是什么?

getload都会查询1级缓存

get是立即加载,如果没找到返回null

load是延迟加载,如果没找到报错

   

44、Html注释和jsp注释分别如何写,那个在客户端看不到(隐式的)?哪个效率高

Html注释:<!-- html注释,可以看到,效率低  -->

Jsp注释:<%-- jsp注释,客户端看不到,隐式效率高--%>

 

45、xml文件进行限制有哪两种方式?

Dtd------------.dtd

Schema-------.xsd(限制要求更高)

 

46、Struts2中自定义类型转换器需要实现的接口、类分别是什么?

TypeConverter  -----------接口

StrutsTypeConverter----------

47、Sql中常用的聚合函数有那些,分别是干什么的

Sum 求和

Avg  平均

Max  最大

Min   最小

Count  统计行数

 

Select count(*) from

Select count() from   ---如果该列值存在为null,则不参与统计

 

48、下列代码运行结果是什么,为什么

 

tx = session.beginTransaction();

Customer c1=(Customer)session.load(Customer.class,new Long(1));

Customer c2=(Customer)session.load(Customer.class,new Long(1));

System.out.println(c1==c2);

tx.commit();

session.close();

true,第一次load会放入缓存中,第二次直接从缓存中取

 

49、Sql中排序时升序和降序的关键字分别是什么?

Asc----升序(默认)

Desc  --降序

 

50、SQL中的索引有什么用?在哪些列上适合建立索引?

索引主要是为了加快查询速度。

1)该列警察被使用、排序、分组等。

2)该列不经常被修改

3)该列重复值不多

索引:

聚集索引,效率高,一个表中只能一个(主键就是聚集索引),索引的顺序和数据的物理顺序一致(拼音目录)

非聚集索引,效率低,一个表中可以多个(最多255个),索引的顺序和数据的顺序不一致(偏旁部首目录)

 

51、子查询如果用 > < = 引出来,那么子查询只能查询出多少值?如果用in 引出来,那么查询出多少值?

单个值   select * from where = (单个值查询)

In的话,可以多个,但是只能单列

 

52、sql中事务的作用是什么?Sql中事务用那些语句构成

事务是为了保证某个功能下的多条sql要么都成功,要么都取消

Begin tran --开始事物

Commit tran --提交事务

Rollback tran –回滚事务

53、存储过程的创建语法是什么,参数可以是什么类型,如何调用

Create proc up_名字(

参数列表

)

As

Begin

--存储过程主体

end

参数可以是输入参数、输出参数(要用output声明)

 

调用存储过程时,使用 exec ,如:

declare @flag int  --声明输出参数

exec up_过程名 参数1,参数2,@flag output

print @flag ---上面的存储过程会将输出参数中进行赋值,作为返回值

 

54、sql中的变量分类,举例

   Sql中变量分为全局变量和局部变量

   全局变量,只能读取数据,不能声明,如:

   @@error  上个语句错误号

   @@identity  最后次插入标识列的值,如果没有,则为null

   @@rowcount  上个增删改语句影响的行数

  

   局部变量,自己声明的:

   Declare @name varchar(30)

   Set @name = ‘jack’

 

55、关于having

Select count(*) from 考试信息表

查询所有人考试的总次数

按人来查询每个人的总次数

Select count(*) from 考试信息表 group by 学生ID

查询考试次数在2次以上的人的id

Select 学生ID from 考试信息表 group by 学生ID having count(*) > 2

 

 

 

56、重载和重写

重载与重写的区别

 
 
 

序号

重载

重写

 
 

1

方法的名称相同,参数个数和类型不同

方法名称、参数列表和返回值类型与父亲完全相同

 
 

2

不要求方法的访问范围

子类中提供的重写方法的访问范围不能小于父类

 
 

3

应用在一个类的内部

应用在父子类继承关系中

 
 

重载:同一个类中,相同的方法名,不同的参数

重写:子类重写父类的方法,方法名、返回类型,参数都一样

 

56、HashMap

 HashMap不能保证其中元素的顺序,HashMapkeyvalue都能为null HashMap使用键/值的形式保存数据,HashMap通过get(key)获取对应的值

 

57、泛型集合

 泛型可以解决数据类型安全的问题,泛型消除了类型强制转换,泛型集合的效率比普通集合更高

 

57、抽象类和接口

抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承。抽象类可以没有构造方法,但是一个类却可以实现多个接口;在抽象类中可以没有抽象方法,抽象类不能被实例化; 实现抽象类和接口的类必须实现其中的所有抽象方法,除非它也是抽象类。接口中的方法都不能被实现,必须在子类中重写;接口中不能有构造方法;接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值

 

58、面向对象的方法:继承、封装、多态

 

59、Java构造方法

构造方法没有返回类型;构造方法是类的一种特殊方法,它的方法名必须与类名相同; 构造方法的主要作用是完成对类的对象的初始化工作

 

60、java中的数据类型

不会改变的是:基本数据类型(8)String类型

基本数据类型(8):Int double float long char boolean  short  byte

 

61java的修饰符:Private -- default ---protected---public

 

61、在浏览器输入http://localhost:8080/news/main/list.jsp,分别执行以代码后,打印结果

System.out.println(request.getContextPath());   打印结果:/news

System.out.println(request.getServletPath());   打印结果:/main/list.jsp

System.out.println(request.getRequestURL());    

打印结果:http://localhost:8080/news/main/list.jsp

System.out.println(request.getRequestURI());   打印结果:/news/main/list.jsp

URL:带http的全路径

URI:项目名/页面名

 

62、WEB

Web服务的数据传输标准是XML

Webservice通信协议:SOAP

 

63XMLHttpRequestreadyState属性值:

0未初始化,刚创建时

1准备发送

2send方法调用,已发送

3正在接收,未完毕

4已经响应完毕

Status的状态信息为200成功、404资源未找到、500服务器报错

 

posted @ 2015-06-13 20:15  叫我程某某  阅读(422)  评论(0编辑  收藏  举报