Java学习笔记——测试——JavaWeb笔试题

1- Servlet API中forware()和redirect()的区别? 
答: 
a、浏览器显示 
     重定向会改变URL地址,请求转发不会改变URL地址。 
b、资源共享 
     重定向不可以资源共享,请求转发可以。 
c、功能 
    重定向可以用URL绝对路径访问其他Web服务器的资源,而请求转发只能在一个Web
应用程序内进行资源转发,即服务器内部的一种操作。 
d、效率 
    重定向效率低,相当于再一次请求;请求转发效率相对较高,跳转仅发生在服务器端。 


2- request.getParameter()和request.getAttribute()的区别? 
答: 
a、request.getParameter()获取的类型是String; 
    request.getAttribute()获取的类型是Object 
b、request.getPrameter()获取的是POST/GET传递的参数值和URL中的参数; 
     request.getAttribute()获取的是对象容器中的数据值/对象 
c、request.setAttribute()和request.getAttribute()可以发送、接收对象; 
    request.getParamter()只能接收字符串,官方不开放request.setParamter()(也就是没有这个方法) 
    setAttribute()和getAttribute()的传参原理: 
    setAttribute()是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另外一个页面时,应用服务器会把这块内存拷贝到另一个页面所对应的那块内存中。这个就可以通过getAttribute()获取到相应的参数值或者对象。

 
3- JSP常用指令有哪些? 
答:page、include、taglib 
a、page指令:定义页面的一些属性,常用属性: 
     contentType="text/html;charset=utf-8";    向浏览器端输出数据的编码 
     pageEncoding="utf-8";                             JSP编译成java文件时所用的编码 
     session="true"                                          是否自动创建session 
b、include指令:引入一个静态的JSP页面 
c、taglib指令:引入一个标签库 


4- JSP中动态include和静态include的区别? 
答 : a、静态include:语法:<%@ include file="文件名" %>,相当于复制,编辑时将对应的文件包含进来,当内容变化时,不会再一次对其编译,不易维护。 
        b、动态include:语法:<jsp:include page="文件名">,能够自动检查被包含文件,当客户端对JSP文件进行请求时,会重新将对应的文件包含进来,进行实时的更新。 


5- 详细描述MVC。 
答:基于java的web应用系统采用MVC设计模型,即用Model(模型)、View(视图)和Controller(控制)分离设计,这是目前web应用服务系统的主流设置方向。 
      Model:处理业务逻辑的模块。 
      View:负责页面显示,显示Model的处理结果给用户,主要实现数据到页面的转换过程。 
      Controller:负责每个请求的分发,把Form数据传递给Model进行处理,处理完成后,把处理结果返回给相应的View显示给用户。 
 
6- 我们在web应用开发过程中经常遇到输出某种编码的字符,如一个字符串iso-8859-1编码怎么转UTF-8编码? 

public String Translate(String str) 
{ 
   String s=""; 
   try{ 
         s=new String(str.getBytes("iso-8859-1"),"UTF-8"); 
         s=str.trim(); 
   }catch(Exception e){ 
        System.err.println(e.getMessage()); 
    }   return s; 
} 


7- javascript常用的方面? 
答:数据校验、页面特殊效果等。 


8- cookie和session的作用、区别、应用范围。 
答:a、cookie数据保存在客户端,session数据保存在服务端。 
       b、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,相当重要的数据,应该使用session保存到服务端。 
       c、session会在一定时间内保持在服务器上,但是会占用内存资源,当访问的用户过多,会加重服务器的负载,考虑到减轻服务器的压力,可以将不重要的数据放在cookie中持久的保存。 
       d、单个cookie保存的数据不能超过4k,很多浏览器都限制站点最多保存20个cookie。
 
9- JSP如何处理运行时异常(run-time)exception? 
答:可是使用页面的errorPaga属性捕捉没有处理的运行时异常,然后自动转向到一个错误处理页面,代码如下: 
<%@page errorPage="错误页面URL"%> 
如果在页面请求时出现运行时异常时,以上代码会将代码转向到错误页面,在错误页面里面,可以通过以下代码定义这个页面是错误处理页面: 
<%@page isErrorPage="true"%> 
这样描述错误信息的Throwable对象就可以在错误页面里面访问到。 


10- 在JSP页面中如何删除一个cookie? 
答: 

<% 
     Cookie cookie=new Cookie("cookie名","cookie值"); 
     cookie.setMaxAge(0); 
     cookie.setPath("/"); 
     response.addCookie(cookie);

%> 


11- Tomcat根目录下目录含义? 
答: 
a、config:配置文件存放路径 
b、webapps:项目部署的目录 
c、bin Tomcat运行需要的脚本与jar的目录 
d、lib:运行项目时所需要的jar的目录 
e、work:部署项目的缓存目录 
f、temp:临时文件的存放目录 
g、logs:记录日志的目录 


12- 乱码如何解决? 
答:

     a、JSP页面乱码 
             <%@page contentType="text/html;charset=utf-8" %> 
     b、表单提交时出现乱码 
           request.setCharacterEncoding("utf-8"); 
     c、数据库出现乱码 
           jdbc:mysql://localhost:3306:/user?useSSL=false&useUnicode=true&characterEncoding=utf-8; 
 
13- 单例模式中的懒汉模式和饿汉模式是什么?代码分别怎么实现?区别又是什么? 
1.懒汉模式:顾名思义,他是一个懒汉,他不愿意动弹。什么时候需要吃饭了,他就什么时候开始想办法
搞点食物。 
即懒汉式一开始不会实例化,什么时候用就什么时候new,才进行实例化。 
2.饿汉模式:顾名思义,他是一个饿汉,他很勤快就怕自己饿着。他总是先把食物准备好,什么时候需要
吃了,他随时拿来吃,不需要临时去搞食物。 
即饿汉式在一开始类加载的时候就已经实例化,并且创建单例对象,以后只管用即可。 
懒汉模式代码: 

public class Singleton { 
 //默认不会实例化,什么时候用就什么时候new 
    private static Singleton instance = null; 
    private Singleton(){ 
 
    } 
    public static synchronized Singleton getInstance(){ 
        if(instance == null){ 
   //什么时候用就什么时候new 
            instance = new Singleton(); 
        } 
        return instance; 
    } 
} 

饿汉模式代码: 

public class Singleton { 
 //一开始类加载的时候就实例化,创建单实例对象 
    private static Singleton instance = new Singleton(); 
    private Singleton(){ 
 
    } 
    public static Singleton getInstance(){ 
        return instance; 
    } 
} 

懒汉式和饿汉式的安全和性能区别: 
(1) 线程安全:饿汉式在线程还没出现之前就已经实例化了,所以饿汉式一定是线程安全的。懒汉式加
载是在使用时才会去new 实例的,那么你去new的时候是一个动态的过程,是放到方法中实现的,比如:    
public static synchronized Singleton getInstance(){ 
          if(instance == null){ 
     //什么时候用就什么时候new 
              instance = new Singleton(); 
          } 
如果这个时候有多个线程访问这个实例,这个时候实例还不存在,还在new,就会进入到方法中,有多少
线程就会new出多少个实例。一个方法只能return一个实例,那最终return出哪个呢?是不是会覆盖
很多new的实例?这种情况当然也可以解决,那就是加同步锁,避免这种情况发生 。 
(2)执行效率:饿汉式没有加任何的锁,因此执行效率比较高。懒汉式一般使用都会加同步锁,效率比饿
汉式差。 
(3)内存使用:饿汉式在一开始类加载的时候就实例化,无论使用与否,都会实例化,所以会占据空间,
浪费内存。懒汉式什么时候用就什么时候实例化,不浪费内存。 
 
14- 将字符串  2008-10-19 10:11:30.345   转化为   2008年10月19日 10时11分30秒345毫秒怎么做? 

public void test () {
    String strDate = "2008-10-19 10:11:30.345" ;
    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ;  // 实例化模板对象 
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒SSS毫秒") ;
    Date d = null ;
    try{
        d = sdf1.parse(strDate) ;
    }catch(Exception e){ 
        e.printStackTrace() ;  
    }
    String s = sdf2.format(d); // 将日期格式化为字符串   2008年10月19日 10时11分30秒345毫秒
    System.out.println(s); 
} 


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSPJavaServer Pages)是一种服务器端的动态网页开发技术,它可以将 Java 代码嵌入 HTML 页面中,从而实现动态网页的生成。 JSP 的基本原理是将 JSP 页面翻译成 Servlet,在服务器端执行 Servlet 代码,再将执行结果返回给客户端。因此,我们在使用 JSP 开发网页时,需要先了解 Servlet 的相关知识。 JSP 的语法基本上就是 HTML 标签加上 Java 代码。以下是一些基本的 JSP 标签: 1. <% ... %>:嵌入 Java 代码,可以用于定义变量、写循环、判断语句等。 2. <%= ... %>:输出 Java 代码的执行结果。 3. <%-- ... --%>:注释,不会被翻译成 Servlet。 4. <jsp:include ... />:包含其他 JSP 页面或 HTML 页面。 5. <jsp:forward ... />:将请求转发到其他资源(JSP 页面、Servlet 或 HTML 页面)。 6. <jsp:useBean ... />:创建 JavaBean 对象。 7. <jsp:setProperty ... />:为 JavaBean 对象设置属性。 8. <jsp:getProperty ... />:取得 JavaBean 对象的属性值。 在 JSP 页面中,我们还可以使用 EL 表达式和 JSTL 标签库来简化代码编写,提高开发效率。 EL(Expression Language)表达式是一种简化的表达式语言,可以用于取值、赋值、计算等操作。例如,${name} 表示取得名为 name 的变量的值。 JSTL(JavaServer Pages Standard Tag Library)是一套标签库,提供了循环、条件判断、格式化、国际化等常用功能的标签。例如,<c:forEach> 标签可以用于循环遍历集合,<c:if> 标签可以用于条件判断。 除了以上标签库,JSP 还支持自定义标签库。我们可以通过编写标签处理器来扩展 JSP 的功能。 JSP 的优点是可以将 Java 代码嵌入 HTML 页面中,使得网页的开发更加灵活和方便。但是,由于 JSP 页面需要翻译成 Servlet,因此会增加服务器的负担和响应时间。此外,JSP 页面中夹杂着 Java 代码,也不利于代码的维护和调试。因此,在开发大型网站时,建议使用 MVC 设计模式,将业务逻辑和视图分离,使得代码更加清晰和易于维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值