Java Web部分(重要)

1.jsp和 servlet 有什么区别?

答:

jsp经编译后就成了Servlet(Jsp的本质就是Servlet,JVM只能识别Java类,不能识别Jsp代码,Web容器将Jsp的代码编译成JVM能够识别的java类)

jsp更擅长表现于页面显示,servlet更擅长于逻辑控制

Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到


2.session 和 cookie 有什么区别?

答:

存储位置不同:session 存储在服务器端;cookie 存储在浏览器端。

安全性不同:cookie 安全性一般,在浏览器存储,可以被伪造和修改。

容量和个数限制:cookie 有容量限制,每个站点下的 cookie 也有个数限制。

存储的多样性:session 可以存储在 Redis 中、数据库中、应用程序中;而 cookie 只能存储在浏览器中


3.说一下 session 的工作原理?

答:session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,session 创建完之后,会把 session 的 id 发送给客户端,客户端再存储到浏览器中。这样客户端每次访问服务器时,都会带着 sessionid,服务器拿到 sessionid 之后,在内存找到与之对应的 session 这样就可以正常工作了


4.如果客户端禁止 cookie 能实现 session 还能用吗?

答:可以用,session 只是依赖 cookie 存储 sessionid,如果 cookie 被禁用了,可以使用 url 中添加 sessionid 的方式保证 session 能正常使用


5.spring mvc 和 struts 的区别是什么?

答:

拦截级别:struts2 是类级别的拦截;spring mvc 是方法级别的拦截。

数据独立性:spring mvc 的方法之间基本上独立的,独享 request 和 response 数据,请求数据通过参数获取,处理结果通过 ModelMap 交回给框架,方法之间不共享变量;而 struts2 虽然方法之间也是独立的,但其所有 action 变量是共享的,这不会影响程序运行,却给我们编码和读程序时带来了一定的麻烦。

拦截机制:struts2 有以自己的 interceptor 机制,spring mvc 用的是独立的 aop 方式,这样导致struts2 的配置文件量比 spring mvc 大。

对 ajax 的支持:spring mvc 集成了ajax,所有 ajax 使用很方便,只需要一个注解 @ResponseBody 就可以实现了;而 struts2 一般需要安装插件或者自己写代码才行。


6.如何避免 sql 注入?

答:

使用预处理 PreparedStatement。

使用正则表达式过滤掉字符中的特殊字符。


7.什么是 XSS 攻击,如何避免?

答:

XSS 攻击:即跨站脚本攻击,它是 Web 程序中常见的漏洞。原理是攻击者往 Web 页面里插入恶意的脚本代码(css 代码、Javascript 代码等),当用户浏览该页面时,嵌入其中的脚本代码会被执行,从而达到恶意攻击用户的目的,如盗取用户 cookie、破坏页面结构、重定向到其他网站等。

预防 XSS 的核心是必须对输入的数据做过滤处理。


8.什么是 CSRF 攻击,如何避免?

答:

CSRF:Cross-Site Request Forgery(中文:跨站请求伪造),可以理解为攻击者盗用了你的身份,以你的名义发送恶意请求,比如:以你名义发送邮件、发消息、购买商品,虚拟货币转账等。

防御手段:

验证请求来源地址;

关键操作添加验证码;

在请求地址添加 token 并验证


9.转发(Forward)和重定向(Redirect)的区别

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

转发(Forword)

通过RequestDispatcher对象的forward(HttpServletRequest request,HttpServletResponse response)方法实现的。RequestDispatcher可以通过HttpServletRequest 的getRequestDispatcher()方法获得。例如下面的代码就是跳转到login_success.jsp页面。

request.getRequestDispatcher("login_success.jsp").forward(request,response);

重定向(Redirect) 是利用服务器返回的状态吗来实现的。客户端浏览器请求服务器的时候,服务器会返回一个状态码。服务器通过HttpServletRequestResponse的setStatus(int status)方法设置状态码。如果服务器返回301或者302,则浏览器会到新的网址重新请求该资源。

从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据.

redirect:不能共享数据.

从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块.

redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等

从效率来说

forward:高.

redirect:低.


10.JSP的内置对象及方法?

request表示HttpServletRequest对象。

它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。

response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)

out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。

pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。

session表示一个请求的javax.servlet.http.HttpSession对象。 Session可以存贮用户的状态信息

applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息

config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。

page表示从该页面产生的一个servlet实例

exception 表示异常对象


11.说一说Servlet的生命周期?

Servlet有良好的生存期的定义,

包括加载和实例化、初始化、处理请求以及服务结束。

这个生存期由 javax.servlet.Servlet接口的init(), service ()和destroy方法表达。

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法 自动派 遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destr oy方 web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet的初始化。

通过 调用 service()方法实现,根据请求的不同调用不同的do*()方法。结束服务,web容器调用servlet的 destroy ()方法。


12.HTTPS和HTTP的区别

http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议

https协议需要到ca申请证书,一般免费证书很少,需要交费。

http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。

http的连接很简单,是无状态的

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全


13.Get和Post的区别

get是从服务器上获取数据(Http与服务器交互的查),post是向服务器传送数据(Http与服务器交互的改),

get传送的数据量较小,不能大于2KB。

post传送的数据量较大,一般被默认为不受限制。

【Http Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。】

之前我们有一个项目开发,遇到了在其他人的电脑上访问是正常的,但是到了他的电脑上就返回400的错误,这个就很奇怪了,之后我们采用了用 fiddler 抓包,发现url超长,他用的是IE浏览器,会对超长的url进行截取,所以会返回400的错误,所以我们表单提交的时候必须用post请求。

get安全性非常低,post安全性较高。但是执行效率却比Post方法好。

在进行文件上传时只能使用post而不能是get。

.表单提交默认是用get.


14.sevlet过滤器是什么?

filter是一个过滤器,用来在请求前和响应后进行数据的处理。 filter的生命周期是:

实例化--->初始化(init)-->进行过滤(doFilter)--->销毁(destroy)-->释放资源

一个Filter必须实现javax.servlet.Filter接口 在项目中我们通常通过filter进行编码转换, 进行安全验证,

进行重复提交的判断。


15.web.xml 中的listener、filter、servlet 加载顺序

真正的加载顺序为:context-param -> listener -> filter -> servlet


16.JSP 标准标签库(JSTL)

1. 1. <c:out>    用于在JSP中显示数据,就像<%= ... >

1. 1. <c:set>    用于保存数据

1. 1. <c:remove>    用于删除数据

1. 1. <c:catch>    用来处理产生错误的异常状况,并且将错误信息储存起来

1. 1. <c:if>    与我们在一般程序中用的if一样

1. 1. <c:choose>    本身只当做<c:when>和<c:otherwise>的父标签

1. 1. <c:when>    <c:choose>的子标签,用来判断条件是否成立

1. 1. <c:otherwise>    <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行

1. 1. <c:import>    检索一个绝对或相对 URL,然后将其内容暴露给页面

1. 1. <c:forEach>    基础迭代标签,接受多种集合类型

1. 1. <c:forTokens>    根据指定的分隔符来分隔内容并迭代输出

1. 1. <c:param>    用来给包含或重定向的页面传递参数

1. 1. <c:redirect>    重定向至一个新的URL.

1. 1. <c:url>    使用可选的查询参数来创造一个URL


17.request.getAttribute()和 request.getParameter()有何区别

从获取方向来看:

getParameter()是获取 POST/GET 传递的参数值;

getAttribute()是获取对象容器中的数据值;

从用途来看:

getParameter用于客户端重定向时,即点击了链接或提交按扭时传值用,即用于在用表单或url重定向传值时接收数据用。

getAttribute用于服务器端重定向时,即在 sevlet 中使用了 forward 函数,或 struts 中使用了

mapping.findForward。 getAttribute 只能收到程序用 setAttribute 传过来的值。

另外,可以用 setAttribute,getAttribute 发送接收对象.而 getParameter 显然只能传字符串。

setAttribute 是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另一个页面时,应用服务器会把这块内存拷贝另一个页面所对应的内存中。这样getAttribute就能取得你所设下的值,当然这种方法可以传对象。session也一样,只是对象在内存中的生命周期不一样而已。getParameter只是应用服务器在分析你送上来的 request页面的文本时,取得你设在表单或 url 重定向时的值。

总结:

getParameter 返回的是String,用于读取提交的表单中的值;(获取之后会根据实际需要转换为自己需要的相应类型,比如整型,日期类型啊等等)

getAttribute 返回的是Object,需进行转换,可用setAttribute 设置成任意对象,使用很灵活,可随时用


18.servlet线程安全描述

    servlet是单列的,对于所有请求都使用一个实例,所以如果有全局变量被多

线程使用的时候,就会出现线程安全问题。

解决这个问题有三种方案:

1.实现singleThreadModel接口,这样对于每次请求都会创建一个新的servlet实例,这样就会消耗服务端内存,降低性能,但是这个接口已经过时,不推荐使用。

2.可以通过加锁(synchroniezd关键字)来避免线程安全问题。这个时候虽然还是单列,但是对于多线程的访问,每次只能有一个请求进行方法体内执行,只有执行完毕后,其他线程才允许访问,降低吞吐量。

3.避免使用全局变量,使用局部变量可以避免线程安全问题,强烈推荐使用此方法来解决servlet线程安全的问题。


19.Java过滤器与SpringMVC拦截器之间的关系与区别 

过滤器和拦截器的区别:

  过滤器需要在web.xml中配置,依赖于servlet容器,实现过滤器的时候需要实现Filter接口。一般做编码过滤器

  拦截器是属于mvc框架的,需要在mvc框架的配置文件中进行配置。一般做登录拦截器

  写了点测试代码,顺便整理一下思路,搞清楚这几者之间的顺序:

  1.过滤器是JavaEE标准,采用函数回调的方式进行。是在请求进入容器之后,还未进入Servlet之前进行预处理,并且在请求结束返回给前端这之间进行后期处理。


    @Override

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        System.out.println("before...");

        chain.doFilter(request, response);

        System.out.println("after...");

    }


  chain.doFilter(request, response);这个方法的调用作为分水岭。事实上调用Servlet的doService()方法是在chain.doFilter(request, response);这个方法中进行的。

  2.拦截器是被包裹在过滤器之中的。


    @Override

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        System.out.println("preHandle");

        return true;

    }

    @Override

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

        System.out.println("postHandle");

    }

    @Override

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

        System.out.println("afterCompletion");

    }


  a.preHandle()这个方法是在过滤器的chain.doFilter(request, response)方法的前一步执行,也就是在 [System.out.println("before...")][chain.doFilter(request, response)]之间执行。

  b.preHandle()方法之后,在return ModelAndView之前进行,可以操控Controller的ModelAndView内容。

  c.afterCompletion()方法是在过滤器返回给前端前一步执行,也就是在[chain.doFilter(request, response)][System.out.println("after...")]之间执行。

  3.SpringMVC的机制是由同一个Servlet来分发请求给不同的Controller,其实这一步是在Servlet的service()方法中执行的。所以过滤器、拦截器、service()方法,dispatc()方法的执行顺序应该是这样的,大致画了个图:其实非常好测试,自己写一个过滤器,一个拦截器,然后在这些方法中都加个断点,一路F8下去就得出了结论。


  总结:拦截器功在对请求权限鉴定方面确实很有用处,在我所参与的这个项目之中,第三方的远程调用每个请求都需要参与鉴定,所以这样做非常方便,而且他是很独立的逻辑,这样做让业务逻辑代码很干净。和框架的其他功能一样,原理很简单,使用起来也很简单,大致看了下SpringMVC这一部分的源码,其实还是比较容易理解的。

  我们项目中仅仅用到了preHandle这个方法,而未用其他的,框架提供了一个已经实现了拦截器接口的适配器类HandlerInterceptorAdapter,继承这个类然后重写一下需要用到的方法就行了,可以少几行代码,这种方式Java中很多地方都有体现。

监听器>拦截器的初始化>过滤器>servlet()


20.Ajax总结,什么是AJAX?AJAX的技术体系组成是由那几部分组成?

    AJAX 全称: 异步JavaScript及 XML(Asynchronous JavaScript And XML)

Ajax的核心是JavaScript对象XmlHttpRequest(XHR)。

Ajax的优点:

    提高用户体验度(UE)

    提高应用程序的性能

    进行局部刷新

AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。

2.  通过 AJAX,我们的 JavaScript 可使用JavaScript的XMLHttpRequest对象来直接与服务器进行通信。通过这个对象,我们的 JavaScript 可在不重载页面的情况与Web服务器交换数据,即可局部刷新。

3.  AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面,减轻服务器的负担,提升站点的性能。

AJAX 可使因特网应用程序更小、更快,更友好,用户体验(UE)好。

5.  Ajax是基于标准化并被广泛支持的技术,并且不需要插件和下载小程序


Ajax: Asynchronous Javascript And Xml;

       (异步的JavaScript和XML)

   包括的技术:JavaScript、XML、CSS、XMLHttpRequest

   异步:发送请求以后,不等结果,由回调函数处理。

   JavaScript:向服务器发送请求,获得返回结果,更新页面

   XML: 用来封装数据

1)创建XMLHttpReuest对象

     非IE浏览器(Mozilla/Safari):

     var xhr=new XMLHttpRequest();

     IE:

     xhr=new ActiveXObject("Msxml2.XMLHTTP");

     低版本IE:

     xhr=new ActiveXObject("Microsfot.XMLHTTP"); 

   2)XMLHttpRequest对象的属性与方法

     a)方法:

      open("GET/POST",URL,true/false):用来向服务器建立连接

       有三个参数:

       参数1:提交方式,post或get

       参数2:请求的URL

       参数3:表示同步或异步请求,true:表示异步请求

       false: 表示同步请求

      send(data):发送请求

       参数:提交的内容。

       POST方式:data就是提交的参数,send(username=root&password=abc123);

       GET方式:send(null)

    b)属性:

     onreadystatechange:设置状态改变时的回调函数,回调函数用来获取服务器数据。

       onreadystatechange=function(){

       }

     readyState:服务器状态响应

       状态码:

       0:未初始化

       1:正在加载

       2:加载完成

       3:请求进行中

       4:请求完成

     responseText:服务器返回的数据(文本格式)

     responseXML:服务器返回的数据(XML格式)


21.XML和Json的特点

1.共同点:

    xml和json都是数据传输的载体,并且具有跨平台跨语言的特性。

Xml特点:

  1、有且只有一个根节点;

  2、所有的标签都需要自定义;

  3、是纯文本文件

Json(JavaScript Object Notation)特点:

  json分为两种格式:

json对象(就是在{}中存储键值对,键和值之间用冒号分隔,

键 值 对之间用逗号分隔);

json数组(就是[]中存储多个json对象,json对象之间用逗号分隔)

(两者间可以进行相互嵌套)数据传输的载体之一

场景:

    像配置文件,一般采取的是xml的格式,因为他描述比较清晰。

    数据的传递我们会采用Json的格式,因为他的效率更高。


22.html中form里action方法的get和post有什么区别?

get和post的区别:

1)请求参数存放的位置不同,get方式放在url后面,post方式放在请求实体内容中

2)请求参数的长度限制不同,get方式有长度限制,post没有

3)安全性,post方式提交的数据更安全

4)get方式的url可以传播,post方式不可以


23.jQuery对象和dom对象是怎样转换的?

jQuery对象转成DOM对象:

两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index);

(1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的DOM对象。

如:var $v =$("#v") ; //jQuery对象

var v=$v[0];    //DOM对象

alert(v.checked)   //检测这个checkbox是否被选中

(2)jQuery本身提供,通过.get(index)方法,得到相应的DOM对象

如:var $v=$("#v");  //jQuery对象

var v=$v.get(0);   //DOM对象

alert(v.checked)  //检测这个checkbox是否被选中


DOM对象转成jQuery对象:

对于已经是一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。$(DOM对象)

如:var v=document.getElementById("v");  //DOM对象

var $v=$(v);    //jQuery对象

转换后,就可以任意使用jQuery的方法了。


24.如何解决AJAX的跨域问题?

1、在请求页面上使用Access-Control-Allow-Origin标头。

   使用如下标头可以接受全部网站请求:

header('Access-Control-Allow-Origin:*')

  使用如下标头可以接受指定网站请求:

header('Access-Control-Allow-Origin:http://www.abc.com')

2、使用jsonp跨域请求。

$data = json_encode(array('msg'=>'msg....'));

die( $_REQUEST['function_name_index'].'('.$data.')' );

<!DOCTYPE html>

<html lang="en" class="">

<head>

<meta charset="utf-8" />

<title>测试</title>

<script src="http://www.ysont.cn/plugs/cookie/js/jquery-1.11.1.min.js"></script>

<body>

<script>

    $.ajax({

        url:'http://192.168.1.124/homekoo.com/zde/cors_1.php',

        dataType:'jsonp',

        jsonp:'function_name_index',

        jsonpCallback:'function_name',

        success:function(data){

            alert(data.msg);

        }

    });

</script>

</body>

</html>


25.AJAX的优点与缺点分别是什么?

(1).AJAX的优点

<1>.无刷新更新数据。

AJAX最大优点就是能在不刷新整个页面的前提下与服务器通信维护数据。这使得Web应用程 序更为迅捷地响应用户交互,并避免了在网络上发送那些没有改变的信息,减少用户等待时间, 带来非常好的用户体验。

<2>.异步与服务器通信。

AJAX使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。优化了 Browser和Server之间的沟通,减少不必要的数据传输、时间及降低网络上数据流量。

<3>.前端和后端负载平衡。

AJAX可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服 务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,AJAX的原则是“按需取 数据”,可以最大程度的减少冗余请求和响应对服务器造成的负担,提升站点性能。

<4>.基于标准被广泛支持。

AJAX基于标准化的并被广泛支持的技术,不需要下载浏览器插件或者小程序,但需要客户允许 JavaScript在浏览器上执行。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。 同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。

<5>.界面与应用分离。

Ajax使WEB中的界面与应用分离(也可以说是数据与呈现分离),有利于分工合作、减少非技 术人员对页面的修改造成的WEB应用程序错误、提高效率、也更加适用于现在的发布系统。

(2).AJAX的缺点

<1>.AJAX干掉了Back和History功能,即对浏览器机制的破坏。

<2>.AJAX的安全问题。

<3>.对搜索引擎支持较弱。

<4>.破坏程序的异常处理机制。

<5>.违背URL和资源定位的初衷。

<6>.AJAX不能很好支持移动设备。

<7>.客户端过肥,太多客户端代码造成开发上的成本。


26.AJAX应用和传统Web应用有什么不同?

a)在传统的Javascript编程中,如果想得到服务器端数据库或文件上的信息,或者发送客户端信息到服务器,需要建立一个HTML form然后GET或者POST数据到服务器端。用户需要点击”Submit”按钮来发送或者接受数据信息,然后等待服务器响应请求,页面重新加载。 

因为服务器每次都会返回一个新的页面, 所以传统的web应用有可能很慢而且用户交互不友好。 

使用AJAX技术, 就可以使Javascript通过XMLHttpRequest对象直接与服务器进行交互。 

通过HTTP Request, 一个web页面可以发送一个请求到web服务器并且接受web服务器返回的信息(不用重新加载页面),展示给用户的还是通一个页面,用户感觉页面刷新,也看不到到Javascript后台进行的发送请求和接受响应。


27.Ajax和javascript的区别? 

a) javascript是一种用于浏览器的脚本语言,它的主要功能分dom和bom操作两种,前者用于对网页文档进行操作,后者对于浏览器对象进行操作,它们都具有丰富多彩的强大效果。虽然JavaScript在诞生之初借用了Java的名,但从前景来看,这种动态弱类型的脚本语言可能比静态强类型的Java要更有前途。

Ajax诞生于2005年,这是一种借助XMLHttpRequest异步与后台进行通信的“新”技术。XMLHttpRequest,加上dom,css,xml等各项技术,再使用JavaScript将它们糅合在一起,就组成了Ajax。它的最大特点是异步无刷新的响应机制,这使BS程序开始在界面感观上能与CS程序媲美。此外,Ajax还不限后台语言,这使得它从诞生之初就得到了非常广泛的认同和使用。


未完待续。。。。将不定时更新

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容

  • 1.Servlet和jsp页面过滤器Filter的作用及配置 【参考答案】 过滤器是一个驻留在服务器端的Web组件...
    码记阅读 458评论 0 0
  • 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Se...
    chinariver阅读 5,617评论 1 49
  • IOC 控制反转容器控制程序对象之间的关系,而不是传统实现中,有程序代码之间控制,又名依赖注入。All 类的创建,...
    irckwk1阅读 942评论 0 0
  • 这部分主要是与Java Web和Web Service相关的面试题。 96、阐述Servlet和CGI的区别? 答...
    杂货铺老板阅读 1,405评论 0 10
  • JSP总结(经典) day1 JSP 定义: 1)Java Server Page, Java EE 组件,本...
    java日记阅读 3,444评论 0 13