﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-xiaohan-文章分类-coreservlets</title><link>http://www.blogjava.net/xiaohan613/category/53063.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 17 Dec 2012 15:56:00 GMT</lastBuildDate><pubDate>Mon, 17 Dec 2012 15:56:00 GMT</pubDate><ttl>60</ttl><item><title>第十二章 JSP page指令</title><link>http://www.blogjava.net/xiaohan613/articles/393053.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Sun, 16 Dec 2012 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/393053.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/393053.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/393053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/393053.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/393053.html</trackback:ping><description><![CDATA[&lt;%@ page import="package.class1,....,package.classN"%&gt;<br /><span style="color: red;">//使用的类必须放在JAVA代码目录中(..../WEB-INF/classes/directory MatchingPackageName)<br /></span><span>&lt;%@ page contentType="MIME-Type"; charset="Character-Set" %&gt;<br /></span><span style="color: red;">//预先知道内容的类型<br /></span><span>&lt;%<br /></span><span>String format = request.getParameter("format");<br /></span><span>if((format != null) &amp;&amp; (format.equals("excel"))){<br />&nbsp;&nbsp;</span><span>respond.setContentType("applicationvnd.ms-excel");</span><br /><span style="color: red;"></span><span>}<br /></span><span>%&gt;<br /></span><span style="color: #ff0000;">//</span><span style="color: #ff0000;">respond.setContentType("applicationvnd.ms-excel")条件性的生成<br /></span>&lt;%@ page seesion="true" %&gt; &lt;%-- Default --%&gt;//true(默认)，是否参与HTTP会话<br />&lt;%@ page isELIgnored="true"%&gt;<br />&lt;%@ page buffer="sizekb"%&gt;<br /><span style="color: #ff0000;">//指定使用缓冲区的大小，除非页面完成、明确对输出执行清空，否则累积至</span><span style="color: #ff0000;">sizekb再</span><span style="color: #ff0000;">执行清空</span><br />&lt;%@ page buffer="none"%&gt;<br /><span style="color: #ff0000;">&lt;%@ page autoFlush="true"%&gt;</span><span style="color: #ff0000;">&lt;%-- Default --%&gt;</span><br /><span style="color: #ff0000;">//当缓冲区充满之后，是否自动清空，还是抛出一个异常</span><br />&lt;% @ page info ="Some Message"%&gt;<span style="color: #ff0000;">//可以在servlet中通过getServletInfo获取字符串<br /></span>&lt;%@ page errorPage="Relativ URL" %&gt;<br />//指定一个页面来处理当前页面中抛出异常但未被捕获的任何异常。<br />&lt;%@ page isErrorPage="true" %&gt;<br />//指定当前页是否可以作为其他JSP页面的错误页面。<br /><span style="color: #ff0000;">将处理错误的页面放在WEB-INF目录中，将禁止客户直接访问WEB-INF。发生错误时，处理错误的页面由服务器访问，不会生产response.sendRedirect调用，客户只能看到最初请求的URL，看不到错误页面的URL<br /></span>&lt;%@ page isThreadSafe="true"%&gt;&lt;%-- default --%&gt;//由于阻止并发访问的标准机制是实现SingleThreadModel接口，因此，<span style="color: #ff0000;">应该避免使用，而应使用显式的同步。<br /></span>&lt;%@ page extends="package.class" %&gt;<br />&lt;%@ page language="cobol" %&gt;<br /><span><br /></span><img src ="http://www.blogjava.net/xiaohan613/aggbug/393053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-16 09:58 <a href="http://www.blogjava.net/xiaohan613/articles/393053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第十一章 JSP</title><link>http://www.blogjava.net/xiaohan613/articles/392960.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Thu, 13 Dec 2012 16:48:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392960.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392960.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392960.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392960.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392960.html</trackback:ping><description><![CDATA[1.所有的类都放在包里<br />&lt;%<br />&nbsp; &nbsp; &nbsp;SomeHelperClass test = new SomeHelperClass(...);<br />&nbsp; &nbsp; &nbsp;String someString = SomeUtilityClass.someStaticMethod(...);<br />%&gt;<br />系统会认为SomeHelperClass 和SomeUtilityClass在哪个包中呢？<br />由JSP页面转换而成的servlet所在的包，可是JSP规范并没有将这个包标准化，因此没人知道这个包在哪。因此最好把类都放在包里，把编译好的class文件放到web应用的ROOT\WEB-INF\classes.<br />&lt;%<br />&nbsp; &nbsp; &nbsp;SomeHelperClass test = new SomeHelperClass(...);<br />&nbsp; &nbsp; <span style="color: red;">&nbsp;String someString = coreservlets.SomeUtilityClass.someStaticMethod(...);</span><br />%&gt;<br />2.JSP/Servlet的对应<br /><span style="color: #ffff00;">&lt;H2&gt;foo&lt;/H2&gt;</span><br /><span style="color: red;">&lt;%! </span><br /><span style="color: red;">&nbsp; &nbsp; &nbsp;Private String randomHeading(){</span><br /><span style="color: red;">&nbsp; &nbsp; &nbsp;Return(&lt;H2&gt; + Math.random() + &lt;/H2&gt;); &nbsp; // 只用于定义字段和方法</span><br /><span style="color: red;">}</span><br /><span style="color: red;">%&gt;</span><br /><span style="color: #99cc00;">&lt;%= bar() %&gt;</span><br /><span style="color: #0000ff;">&lt;% bar(); %&gt;</span><br /><strong>生成的Servlet</strong><br />public class xxxx implements HttpJspPage{<br /><span style="color: red;">&nbsp; &nbsp; private String randomHeading(){</span><br /><span style="color: red;">&nbsp; &nbsp; &nbsp; &nbsp;return(&lt;H2&gt; + Math.random() + &lt;/H2&gt;);</span><br /><span style="color: red;">&nbsp; &nbsp; }</span><br />&nbsp; &nbsp; public void _jspService(HttpServletRequest request, HttpServletResponse response)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Throws ServletException, IOException{<br />&nbsp; &nbsp; &nbsp; &nbsp; Response.setContentType(text/html);<br />&nbsp; &nbsp; &nbsp; &nbsp; HttpSession session = request.getSession();<br />&nbsp; &nbsp; &nbsp; &nbsp; JspWriter out = response.getWriter();<br />&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ffff00;">out.println(</span><span style="color: #ffff00;">&lt;H2&gt;foo&lt;/H2&gt;</span><span style="color: #ffff00;">);</span><br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: #99cc00;">out.println(</span><span style="color: #99cc00;">bar()</span><span style="color: #99cc00;">);</span><br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: #0000ff;">bar();</span><br />&nbsp; &nbsp; }<br />}<br />3._jspService自动定义的8个局部变量<br />request - HttpServletRequest<br />response - HttpServletResponse<br />out - JspWriter (对输出进行缓存，通过page指令的buffer属性调整缓冲区的大小)<br />session - HttpSession<br />application - ServletContext，由Web应用中所有的servlet和JSP页面共享<br />config - ServletConfig，可以使用它来读取初始化参数，不过实际中，初始化参数在jspInit中读取，而非_jspService<br />pageContext - 存储的是与当前页面相关的值<br />page - this的同义词，为了在脚本语言中作占位符<br /><img src ="http://www.blogjava.net/xiaohan613/aggbug/392960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-14 00:48 <a href="http://www.blogjava.net/xiaohan613/articles/392960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第九章 session</title><link>http://www.blogjava.net/xiaohan613/articles/392838.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Tue, 11 Dec 2012 17:07:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392838.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392838.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392838.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392838.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392838.html</trackback:ping><description><![CDATA[1.向回话中添加信息<br />HttpSession session = request.getSession();<br /><span style="color: red;">/*系统从cookie提取用户ID，然后以该ID为键，访问HttpSession对象组成的表。</span><br /><span style="color: red;">&nbsp;*如果session == null的话，系统默认创建一个新的空session，同时还会创建一个名为JSESSIONID的cookie(允许使用)。</span><br /><span style="color: red;">&nbsp;*有时候创建一个新的session是一种浪费，可以使用getSession(false)禁止这种创建。</span><br /><span style="color: red;">&nbsp;*/</span><br />SomeClass value = (SomeClass)sesson.getAttribute("someIdentifier");<br />/*<br />*可以调用getAttributeNames()得到所有属性的一个Enumeration.<br />*/<br />if(value == null){<br />value = new SomeClass(....);<br />session.setAttribute("someIdentifier", value);<br />/*<br />*属性类型只要是Object就可以了<br />*/<br />}<br />doSomethingWith(value);<br />2.对url进行编码<br />1）String originalURL = ....;<br />&nbsp; &nbsp; String encodeURL =response.encodeURL(originalURL);<br />&nbsp; &nbsp; out.println("&lt;A HREF=\" " + encodeURL + "\"&gt;...&lt;/A&gt;");<br />2)&nbsp;String originalURL = ....;<br />&nbsp; &nbsp; String encodeURL =response.encodeRedirectURL(originalURL);<br />&nbsp; &nbsp; response.sendRedirect(encodeURL);<br />&nbsp; &nbsp; 由于在sendRedirect调用中，URL是放在Location响应报头的，这种情况下，要根据不同的规则确定是否需要附加会话信息，因此不能使用encodeURL.<br /><img src ="http://www.blogjava.net/xiaohan613/aggbug/392838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-12 01:07 <a href="http://www.blogjava.net/xiaohan613/articles/392838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第八章 cookie的设置</title><link>http://www.blogjava.net/xiaohan613/articles/392837.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Tue, 11 Dec 2012 15:27:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392837.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392837.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392837.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392837.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392837.html</trackback:ping><description><![CDATA[1.服务器端设置COOKIE<br />1)Cookie cookie = new Cookie(name, value);<br />2)cookie.setMaxAge(mills);<br />3)response.addCookie(cookie);<br />2.客户端读取cookie<br />1)ookie[] cookies = request.getCookies();<br />2)遍历cookies，找到感兴趣的cookie<br />3.修改cookie的值<br />1）String cookieValue = cookie.getCookieValue("cookiename&#8220;)；<br />&nbsp; &nbsp; try{<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int cookieInt = Integer.parseInt(cookieValue);<br />&nbsp; &nbsp; }catch(NumberFormatException nfe) { }<br />&nbsp; &nbsp; Cookie c = new Cookie("cookiename", String.valueOf(cookieValue+1));<br />&nbsp; &nbsp;<span style="color: red;"> response.addCookie(c);//不能简单的setValue<br />2)要指示浏览器删除一个cookie，只需将setMaxAge置为0<br /><br /></span><img src ="http://www.blogjava.net/xiaohan613/aggbug/392837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-11 23:27 <a href="http://www.blogjava.net/xiaohan613/articles/392837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第七章  使用SERVLET生成JPEG</title><link>http://www.blogjava.net/xiaohan613/articles/392697.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Sun, 09 Dec 2012 15:18:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392697.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392697.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392697.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392697.html</trackback:ping><description><![CDATA[生成JPEG所需的具体步骤<br />1.创建一个BufferedImage<br />&nbsp; &nbsp;int width = ...;<br />&nbsp; &nbsp;int height = ....;<br />&nbsp; &nbsp;BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);<br />2.在BufferedImage上绘制内容<br />&nbsp; &nbsp;Graphics2D g2d = (Graphics2D)image.getGraphics();<br />&nbsp; &nbsp;g2d.setXXX(...);<br />&nbsp; &nbsp;g2d.fill(...);<br />&nbsp; &nbsp;g2d.draw(...);<br />3. 设置Content-Type响应报头<br />&nbsp; &nbsp;reponse.setContentType("image/jpeg");<br />4. 获取输出流<br />&nbsp; OutputStream out = response.getOutputStream();<br />5.以JPEG格式将BufferedImage发送到输出流<br />&nbsp; try{<br />&nbsp; &nbsp; &nbsp; &nbsp; ImageIO.writer(image, "jpg", out);<br />}catch(IOException ioe){<br />&nbsp; &nbsp; &nbsp; &nbsp; System.err.println("Error writing jpeg file: " + ioe);<br />}<img src ="http://www.blogjava.net/xiaohan613/aggbug/392697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-09 23:18 <a href="http://www.blogjava.net/xiaohan613/articles/392697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第六章  重定向</title><link>http://www.blogjava.net/xiaohan613/articles/392683.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Sun, 09 Dec 2012 08:18:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392683.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392683.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392683.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392683.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392683.html</trackback:ping><description><![CDATA[public void sendRedirect(String url)<br />该方法生成302响应以及Location报头，给出新文档的URL，浏览器将直接 连接到新的位置。<br />public void sendError(int Code, String message)<br />该方法发送状态代码（一般是404）以及一段消息。<br />对于大部分服务器都会自动为404响应生成一小段file not found消息，其实servlet可以通过sendError\setStatus对这个响应进行定制。&nbsp;<img src ="http://www.blogjava.net/xiaohan613/aggbug/392683.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-09 16:18 <a href="http://www.blogjava.net/xiaohan613/articles/392683.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第五章  发送压缩Web页面</title><link>http://www.blogjava.net/xiaohan613/articles/392648.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Sat, 08 Dec 2012 03:05:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392648.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392648.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392648.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392648.html</trackback:ping><description><![CDATA[1.检查客户端是否支持该压缩<br />向客户端发送压缩的Web页面，必须检查request的Accept-Encoding报头是否支持这种压缩格式，如果向不支持的客户端发送压缩的Web页面，那么客户端将不能正常显示。<br />2.respond必须设置报头的Content-Encoding<br />如果客户端支持该压缩，使用该压缩对输出进行包装后，必须设置respond的报头的编码为该压缩，这样客户端才能正确的解压缩。<br />3.如果是gzip格式，必须out.close()。<br /><br />PrintWriter out;<br />String encodeings = request.getHeader("Accept-Encoding");<br />String flag = request.getHeader("disableGzip")<br />if( ((encodings != null) &amp;&amp; (encodings.indexof("gzip")) != -1)) &amp;&amp;(!((flag != null) &amp;&amp; (!flag.equalsIgnoreCase("false")))){<br />out = new PrintWriter(new GZIPoutputStream(response.getOutputStream()));<br />response.setHeader("Content-Encoding", "gzip");<br />}else{<br />&nbsp; out = response.getWriter();<br />}<br />.........<br />.........&nbsp;<br /><img src ="http://www.blogjava.net/xiaohan613/aggbug/392648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-08 11:05 <a href="http://www.blogjava.net/xiaohan613/articles/392648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>4.7使用第三方JAR时，文件如何放置</title><link>http://www.blogjava.net/xiaohan613/articles/392517.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Wed, 05 Dec 2012 14:09:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392517.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392517.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392517.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392517.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392517.html</trackback:ping><description><![CDATA[对于开发，将JAR文件列在CLASSPATH中；也可以将其放到jre/lib/ext中；<br />对于部署，将JAR文件放在WEB应用的WEB-INF/lib目录中。&nbsp;<img src ="http://www.blogjava.net/xiaohan613/aggbug/392517.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-05 22:09 <a href="http://www.blogjava.net/xiaohan613/articles/392517.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第四章 表单数据</title><link>http://www.blogjava.net/xiaohan613/articles/392329.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Sat, 01 Dec 2012 09:11:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392329.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392329.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392329.html</trackback:ping><description><![CDATA[客户单通过创建html的form表单来与servlet交互的<br />&lt;FORM ACTION="...."&gt;.....&lt;/FORM&gt;，其中action对应的就是处理表单数据的servlet的url。<br />&lt;INPUT TYPE="TEXT" &nbsp;NAME="...."&gt;，servlet通过request.getParameter(NAME)来读取表单中的数据。其中TYPE是html输入的类型。<br />&lt;INPUT TYPE="SUBMIT"&gt; 按下这个按钮，浏览器会调用表单的ACTION指定的URL。<br /><br /><strong>在servlet中读取表单数据的函数</strong>。<br />单值读取，request.getParameter("NAME")注意参数名是大小写敏感的。<br />多值读取，request.getParameterValues("NAME")返回的是字符串数组。对于不存在的参数名，返回值为null，如果只有单一的值，则返回只有一个元素的数组。<br />参数名查找，一般情况下servlet并不知道参数名，<br />Enumeration e = request.getParameterNames();<br />while(e.hasmoreElements()){<br />String s = (String)e.nextElement();<br />String[] paraValues = request.getParameterValues(s);<br />}<br />getParameterMap是getParameterNames()的代替方案，这个方法返回的是一个Map：<br />(参数名，getParameterNames())。<br />getReader用了读取定制的客户的数据。<br />getInputStream读取&lt;INPUT TYPE="FILE" .....&gt;<br /><br />多字符集输入的读取<br />默认情况下，request.getParameter使用的是服务器当前的字符集解释输入的，如果要改变默认行为，就要使用request.setCharacterEncoding来设置字符集。<br />但是要是输入中使用了多个字符集，这种做法就行不通了。<br />可以用getBytes来提取原始的字节数据，然后用String的构造函数进行编码。<br />String s = request.getParameter("firstname");<br />String s = new String(s.getBytes(), &#8220;GBK&#8221;);<img src ="http://www.blogjava.net/xiaohan613/aggbug/392329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-01 17:11 <a href="http://www.blogjava.net/xiaohan613/articles/392329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第四章 servlet处理表单数据时注意事项</title><link>http://www.blogjava.net/xiaohan613/articles/392328.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Sat, 01 Dec 2012 08:37:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392328.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392328.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392328.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392328.html</trackback:ping><description><![CDATA[1.参数缺失或异常<br />分析请求的参数时，参数值为null，空字符串<br />String param = request.getParameter("someName");<br />if((para == null) || (param.trim.equals(""))){<br />&nbsp; doSomethingForMissingValues(...);<br />}else{<br />&nbsp; doSomethingWithParameter(param);<br />}<br />2.非空，含有HTML特殊字符<br />例如输入字符中有&lt;，&gt;等，必须在服务器端对字符进行过滤转换。<br />2.格式有误<br />服务器端必须进行验证<img src ="http://www.blogjava.net/xiaohan613/aggbug/392328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-01 16:37 <a href="http://www.blogjava.net/xiaohan613/articles/392328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SingleThreadModel接口的问题</title><link>http://www.blogjava.net/xiaohan613/articles/392326.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Sat, 01 Dec 2012 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392326.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392326.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392326.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392326.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392326.html</trackback:ping><description><![CDATA[由于，一般情况下系统只生成servlet的单一实例，之后，为每个用户请求创建新的线程。这样的话，可能出现多个线程并发地访问同一个servlet对象。&nbsp;<br />原则上可以实现SingleThreadModel，可以保证不会有多个请求线程同时访问该单个实例。但是这不是个好选择。<br /><br />原因一，如果servlet被频繁访问，那么同步会对性能造成极大的等待时间。<br />原因二，现在服务器可以使用多个实例来处理请求，这样的话仍然会出现并发访问的问题。<br /><br />一个好的方案，就是明确地同步对代码的访问。<br />synchronized(this){<br />................<br />}<img src ="http://www.blogjava.net/xiaohan613/aggbug/392326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-01 14:18 <a href="http://www.blogjava.net/xiaohan613/articles/392326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> tomcat错误之A child container failed during start</title><link>http://www.blogjava.net/xiaohan613/articles/392324.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Sat, 01 Dec 2012 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392324.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392324.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392324.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392324.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392324.html</trackback:ping><description><![CDATA[<p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">错误原因：</p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">已经发布到tomcat上的某个项目的servlet过滤器配置错误。</p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">如在web.xml下，将过滤规则定为&#8220;*&#8221;就是一种错误，需要更正为&#8220;/*&#8221;或者其他（但是必须要有&#8220;/&#8221;开头，表示当前项目</p><img src ="http://www.blogjava.net/xiaohan613/aggbug/392324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-01 11:58 <a href="http://www.blogjava.net/xiaohan613/articles/392324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>含有package的servlet部署</title><link>http://www.blogjava.net/xiaohan613/articles/392311.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Fri, 30 Nov 2012 16:22:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392311.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392311.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392311.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392311.html</trackback:ping><description><![CDATA[把编译后的class文件放到服务器的webapp/ROOT/WEB-INF/classes下面的具体包的子目录中。然后配置XML<br /><div>&nbsp;&lt;servlet&gt;</div><div>&nbsp; &nbsp; &lt;servlet-name&gt;Servlet2&lt;/servlet-name&gt;</div><div>&nbsp; &nbsp; &lt;servlet-class&gt;coreservlets.HelloServlet2&lt;/servlet-class&gt;</div><div>&nbsp; &lt;/servlet&gt;<br /><div>&lt;servlet-mapping&gt;</div><div>&nbsp; &nbsp; &lt;servlet-name&gt;Servlet2&lt;/servlet-name&gt;</div><div>&nbsp; &nbsp; &lt;url-pattern&gt;/servlet2&lt;/url-pattern&gt;</div><div>&nbsp; &lt;/servlet-mapping&gt;<br />然后用URL&nbsp;<a href="http://localhost/servlet2">http://localhost/servlet2</a>就可以看到servlet的内容了。</div></div><img src ="http://www.blogjava.net/xiaohan613/aggbug/392311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-12-01 00:22 <a href="http://www.blogjava.net/xiaohan613/articles/392311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>测试WEB核心编程中的servlet，总是报找不到的问题</title><link>http://www.blogjava.net/xiaohan613/articles/392241.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Thu, 29 Nov 2012 21:24:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392241.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392241.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392241.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392241.html</trackback:ping><description><![CDATA[最近在学java web，按照servlet核心编程上的一步一步测试，可是到测试servlet时却总是报找不到。我按照书上说的把编译好的CLASS放到WEBAPP/WEB-INF/classes目录下，用http://localhost/servlet/HelloServlet访问，总是说找不到。<br />在百度上一搜，都说要配置xml<br /><div>&nbsp; &lt;servlet&gt;</div><div>&nbsp; &nbsp; &lt;servlet-name&gt;HelloServlet&lt;/servlet-name&gt;</div><div>&nbsp; &nbsp; &lt;servlet-class&gt;HelloServlet&lt;/servlet-class&gt;</div><div>&nbsp;&lt;/servlet&gt;</div><div>&nbsp;&lt;servlet-mapping&gt;</div><div>&nbsp; &nbsp; &lt;servlet-name&gt;HelloServlet&lt;/servlet-name&gt;</div><div>&nbsp; &nbsp; &lt;url-pattern&gt;/HelloServlet&lt;/url-pattern&gt;</div><div>&nbsp;&lt;/servlet-mapping&gt;</div>然后用<a href="http://localhost/HelloServlet">http://localhost/HelloServlet</a>访问，就可以了。用<a href="http://localhost/HelloServlet">http://localhost/servlet/HelloServlet</a>&nbsp;还是报错。<br />至于书上说要用<a href="http://localhost/HelloServlet">http://localhost/servlet/HelloServlet</a>，说其中的servlet是一条指令，用来运行知道名称的servlet。可是是用的tomcat版本不一样，比较书比较早，我用的tomcat7，估计是有些地方改了。<img src ="http://www.blogjava.net/xiaohan613/aggbug/392241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-11-30 05:24 <a href="http://www.blogjava.net/xiaohan613/articles/392241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>找不到javax.servlet</title><link>http://www.blogjava.net/xiaohan613/articles/392107.html</link><dc:creator>晓寒</dc:creator><author>晓寒</author><pubDate>Tue, 27 Nov 2012 18:21:00 GMT</pubDate><guid>http://www.blogjava.net/xiaohan613/articles/392107.html</guid><wfw:comment>http://www.blogjava.net/xiaohan613/comments/392107.html</wfw:comment><comments>http://www.blogjava.net/xiaohan613/articles/392107.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xiaohan613/comments/commentRss/392107.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xiaohan613/services/trackbacks/392107.html</trackback:ping><description><![CDATA[1.在命令行中javac一个servlet，报找不到javax.servlet<br />原因是servlet的api在j2se中没有，<br />因此必须在classpath中把服务器中的servlet-api.jar的路径设进去（书上一般说这么设置就OK了，但是我这不好使，还必须进行另外一项设置，把servlet-api.jar拷贝进jdk中jre\lib\ext中 ，不然仍然会报错）<br />2.至此，命令行好使了，但是eclipse仍然找不到servlet<br />其实跟上面原因一样，由于j2se中的lib中没有servlet，因此必须把服务器中的servlet-api.jar引入libraries中，即<br />project-properties中的libraries中点击add external jars...把servlet的路径添进去就OK了<img src ="http://www.blogjava.net/xiaohan613/aggbug/392107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xiaohan613/" target="_blank">晓寒</a> 2012-11-28 02:21 <a href="http://www.blogjava.net/xiaohan613/articles/392107.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>