第一次写博客,出现点小问题

 

 

关于异常_网页

 

做了一个查询网页,但点击删除按钮 报出异常

 java.lang.NullPointerException

2014-10-16 20:45:20 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
 at org.apache.jsp.Manager.input.chargeOffSearchResult_jsp._jspService(chargeOffSearchResult_jsp.java:127)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)

 

 

但经过检查之后没发现有空指针,但问题出在哪了呢 在看发现一个愚蠢的问题

RequestDispatcher dis=req.getRequestDispatcher("/Manager/input/chargeOffSearchResult.jsp");
      dis.forward(req, resp);

 

跳转到本页面出现的问题 我写的直接往 chargeOffSearchResult.jsp 跳 ,没有值传递,当然会抛异常了

 

后来我又写R

equestDispatcher dis=req.getRequestDispatcher("/chargeOffSearchResultAction");
      dis.forward(req, resp);

 

想往select 跳转 ,随后又抛出异常

HTTP Status 405 - HTTP method GET is not supported by this URL

 

type Status report

message HTTP method GET is not supported by this URL

description The specified HTTP method is not allowed for the requested resource.

按照它的提示 我又加了一个  get方法(以前是post方法)  就好了 ,也没有抛异常,还能删去记录

但是我前面表单写的是 method=“post” ,提交数据的时候应该也没有 用到get方法,为什么要写get

方法呢

 

自己查资料应该是这样解释的

 get是从服务器上获取数据,post是向服务器传送数据。

如果以GET方式传输,所带参数附加在CGI程式的URL后直接传给server,并可从server端的QUERY_STRING这个环境变量中读取;

 

如果以POST方式传输,则参数会被打包在数据报中传送给server,并可从CONTENT_LENGTH这个环境变量中读取出来

 

 

下面在说一下get和post的区别吧

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

Get是不安全的,因为在传输过程,数据被放在请求的URL中,将表单内各字段名称与其内容,以成对的字符串连接,置于 action 属性所指程序的 url 后,如[url]http://www.project/test.jsp?name=admin&password=admin[/url],数据都会 直接显示在 url 上,就像用户点击一个链接一样;Post 方法通过 HTTP post 机制,将表单内各字段名称与其内容放置在 HTML 表头(header)内一起传送给服务器端交由 action 属性能所指的程序处理,该程序会通过标准输入(stdin)方式,将表单的数据读出并加以处理    Post的所有操作对用户来说都是不可见的。

出于安全性考虑,建议最好使用 Post 提交数据

2、 Get 方式需要使用 Request.QueryString 来取得变量的值;而 Post 方式通过 Request.Form 来访问提交的内容
3、Get 方式传输的数据量非常小,一般限制在 2 KB 左右,但是执行效率却比 Post 方法好;而 Post 方式传递的数据量相对较大,它是等待服务器来读取数据,不过也有字节限制

GET 支持的最大字节限制是 2048 Bytes
POST 支持的最大字节限制是 2GB

4.如果以GET方式传输,所带参数附加在CGI程式的URL后直接传给server,并可从server端的QUERY_STRING这个环境变量中读取;

如果以POST方式传输,则参数会被打包在数据报中传送给server,并可从CONTENT_LENGTH这个环境变量中读取出来。

还有一种情况是,你用的是GET方式,但传送的参数是路径,如:

----< ahref="/cgi-bin/a.pl/usr/local/bin/pine" >CGI< /a >

----这时所传递的参数"/usr/local/bin/pine"存放在PATH_INFO这个环境变量中。环境变量的读取方式为$str=$ENV{'QUERY_STRING'};

理论上说,GET是从服务器上请求数据,POST是发送数据到服务器。事实上,GET方法是把数据参数队列(query string)加到一个URL上,值和表单是一一对应的。比如说,name=John。在队列里,值和表单用一个&符号分开,空格用 号替换,特殊的符号转换成十六进制的代码。因为这一队列在URL里边,这样队列的参数就能看得到,可以被记录下来,或更改。通常GET方法还限制字符的大小。事实上POST方法可以没有时间限制的传递数据到服务器,用户在浏览器端是看不到这一过程的,所以POST方法比较适合用于发送一个保密的(比如信用卡号)或者比较大量的数据到服务器。

 5.get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串);

post方式:就传输方式讲参数会被打包在数据报中传输,从CONTENT_LENGTH这个环境变量中读取,便于传送较大一些的数据,同时因为不暴露数据在浏览器的地址栏中,安全性相对较高,但这样的处理效率会受到影响。

6.Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。