Java 基础面试题(六) day6

9 篇文章 0 订阅
2 篇文章 0 订阅

Java 基础面试题

  1. PreparedStatement接口与Statement接口相比,有哪些优势?
    1. PreparedStatement 接口继承并扩展了Statement 接口;
    2. 性能方面,PreparedStatement有预编译过程,一旦绑定SQL语句就可以执行多次,Statement执行多少次就要编译多少次SQL语句。
    3. PreparedStatement用来执行动态的SQL语句,即包含参数的SQL语句,而Statement用来执行静态的SQL语句,并返回执行结果。
    4. 代码可读性和可维护性、安全性方面,PreparedStatement使用占位符(?),可读性和可维护性更好。
    5. PreparedStatement使用预编译处理,传入的任何参数都不会和已经预编译的SQL语句进行拼接,使SQL语句的规范性更高,安全性更强。
    6. 继承关系方面,作为Statement的子类,PreparedStatement继承了Statement的所有功能,PreparedStatement可以做Statement能做的操作,但Statement不一定能做PreparedStatement的操作。比如PreparedStatement可以通过setxxx()或setObject()方法为SQL语句中的参数赋值。
  2. JDBC,Hibernate分页怎样实现?
    1. Hibernate的分页:

      //思路后台
      Query query = session.createQuery("from Student"); 
      query.setFirstResult(firstResult);//设置每页开始的记录号 
      query.setMaxResults(resultNumber);//设置每页显示的记录数 
      Collection students = query.list(); 
      
      	// 分页显示所有的数据
      	public List pageCountryList(int pageNum, int pageSize) {
      		// pageSize:每页显示多少条记录
      		// pageNem:显示第几页
      		Session sess = HibernateSessionFactory.getSession();
      		Criteria ctr = sess.createCriteria(TbCountriesName.class);//里面的参数就是数据表映射后对应的实体类(我映射后的实体类叫做TBCountriesName.class)
      		
      		int firstRow = (pageNum - 1) * pageSize;// 获取第一行
      		ctr.setFirstResult(firstRow);
      		ctr.setMaxResults(pageSize);// 每页显示的行数
      		List list = ctr.list();
      		return list;
      	}
      

      获取全部数据:

      	public List getAllCountiesName() {//得到所有的数据
      		Session sess = HibernateSessionFactory.getSession();
      		List list = sess.createCriteria(TbCountriesName.class).list();
      		//HibernateSessionFactory.closeSession();
      		return list;
      	}
      
      //页面分页
          TbCountriesNameBean bean = new TbCountriesNameBean();//实例化
      	List list = bean.getAllCountiesName(); 
       
          int pagesSize = 3;//每页显示三条数据
       
          String strPages = request.getParameter("pages");//接受提交的页码
       
      	if (strPages == null || strPages == "") {
      		strPages = "1";//初始化传入的数据,获得第一页数据(当用户没有提交页码的时候,默认为第一页)
      	}
       
      	// pages:显示第几页
      	int pages = Integer.parseInt(strPages);
       
      	int num = list.size() % pagesSize;//用总数除以定义的每页显示的数据
      	int q;//定义一个参数,用作页面的计算
      	if (num != 0) {
      		q = list.size() / pagesSize + 1;//如果页数不能被总数整除,就加一
      	} else {
      		q = list.size() / pagesSize;
      	}
      	List list1 = bean.pageCountryList(pages, pagesSize);
      
    2. JDBC的分页:

      1. 根据不同的数据库采用不同的sql分页语句 例如: Oracle中的sql语句为:

        --查询从记录号2到记录号10之间的所有记录
        SELECT * FROM (SELECT a.*, rownum r FROM TB_STUDENT) WHERE r between 2 and 10
        
  3. 说出Servlet的生命周期
    1. Web容器加载Servlet并将其实例化后,Servlet生命周期开始。
    2. 容器运行其init()方法进行Servlet的初始化,请求到达时运行其service方法;
    3. service方法自动派遣运行与请求对应的doXXX方法(doGet(),doPost())等,
    4. 当服务器决定将实例销毁的时候调用其destroy()方法.
  4. forward(转发) 和redirect(重定向)的区别?
    1. forward(转发)客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
    2. redirect(重定向)就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的链接地址。实际是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。
    3. 重定向与转发区别
      1. forward 转发就相当于:“A找B借钱,B说没有,B去找C借,借到借不到都会把消息传递给A”;
      2. redirect就相当于:“A找B借钱,B说没有,让A去找C借”。
      3. url
      4. 转发的地址必须是同一个应用内
      5. 重定向的地址没有限制
      6. request
        1. 转发可以共享request
        2. 重定向不可以
      7. 事件
        1. 转发是未完成
        2. 重定向是已完成
      8. 浏览器地址栏
        1. 转发不变
        2. 重定向是改变的
  5. request.getParameter()和request.getAttribute()的区别?
    1. request.getParameter()获取的类型是String;
    2. request.getAttribute()获取的类型是Object
    3. request.getPrameter()获取的是POST/GET传递的参数值和URL中的参数;
    4. request.getAttribute()获取的是对象容器中的数据值/对象
    5. request.setAttribute()和request.getAttribute()可以发送、接收对象;
    6. request.getParamter()只能接收字符串,官方不开放request.setParamter()(也就是没有这个方法)setAttribute()和getAttribute()的传参原理:
    7. setAttribute()是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另外一个页面时,
    8. 应用服务器会把这块内存拷贝到另一个页面所对应的那块内存中。这个就可以通过getAttribute()获取到相应的参数值或者对象。
  6. jsp有哪些内置对象?作用分别是什么?
    1. JSP一共有9个内置对象:
      1. request:负责得到客户端请求的信息,对应类型:javax.servlet.http.HttpServletRequest
      2. response:负责向客户端发出响应,对应类型:javax.servlet.http.HttpServletResponse
      3. session:负责保存同一客户端一次会话过程中的一些信息,对应类型:javax.servlet.http.httpsession
      4. out:负责管理对客户端的输出,对应类型:javax.serlvet.jsp.jspwriter
      5. application:表示整个应用环境的信息,对应类型:javax.servlet.servletcontext
      6. config:表示ServletConfig,对应类型:javax.servlet.servletconfig
      7. exception:表示页面中发生的异常,可以通过它获得页面异常信息,对应类型:java.lang.exception
      8. pagecontext:表示这个JSP页面上下文,对应类型:javax.servlet.jsp.pagecontext
      9. page:表示当前JSP页面本身。
  7. jsp的四种范围?
    1. page是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面
    2. request是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)
    3. session是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求
    4. application是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域。
  8. 页面间对象传递的方法。
    1. request、session、application、cookie等。
  9. 详细描述MVC。
    1. 基于java的web应用系统采用MVC设计模型,即用Model(模型)、View(视图)和Controller(控制)分离设计,这是目前web应用服务系统的主流设置方向。
    2. Model:处理业务逻辑的模块。
    3. View:负责页面显示,显示Model的处理结果给用户,主要实现数据到页面的转换过程。
    4. Controller:负责每个请求的分发,把Form数据传递给Model进行处理,处理完成后,把处理结果返回给相应的View显示给用户。
  10. MVC各个部分都有哪些技术实现?如何实现?
    1. MVC是Model-View-Controller的简写。
    2. Model代表应用的业务逻辑(通过JavaBean、EJB组件实现),
    3. View是引用的表示面(由JSP产生),
    4. Controller是提供应用的处理过程机制
    5. (一般是一个Servelt),通过这种设计模型把应用逻辑、处理过程和显示逻辑分成不同的组件来实现。这些组件可以交互和重用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Restart629

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值