背景
失败是成功之母,前提是没有被遗忘的失败,本文记录这几天学习 Java,自己遇到的几个问题和解决方案,希望能达到强化记忆的作用。
开发环境是:Eclipse + Tomcat7.0。
第一个:依赖的第三方 jar 必须拷贝到 WEB-INF\lib 或 Tomcat 的 lib 目录
如果只是将第三方 jar 包添加到 build path 中只能保证编译通过,不能保证运行成功,关于如何配置运行期间类型的加载路径,我还没有查资料。
第二个:使用了 == 号
java 中不能重写运算符,对于 Class 和 Interface 来说,equals 的语义是值比较,== 的语义是引用比较。
第三个:在 Tomcat7.0 中使用了默认包
默认包中的类型在 JSP 中使用的时候,编译时没有问题,运行时就出错了。
第四个:在一个会话里测试 Page 指令的 isThreadSafe 配置
isThreadSafe 为 false 会导致所有请求串行化,为 true 会导致会话内的请求串行化。
如果你用同一个会话测试的话,true 和 false 的效果是一样的,使用两个浏览器可以到达期望的效果。
1 <%@ page language="java" session="false" isThreadSafe="false"
2 contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
4 <html>
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; utf-8">
7 <title>page 指令学习</title>
8 </head>
9 <body>
10 <p>isThreadSafe为false会导致所有请求串行化,为true会导致会话内的请求串行化。</p>
11 开始时间是:
12 <%
13 out.println(new java.util.Date());
14 %>
15 <br />
16 <%
17 Thread.sleep(5000);
18 %>
19 结束时间是:
20 <%
21 out.println(new java.util.Date());
22 %>
23 <br />
24 <%=Thread.currentThread().getId()%>
25 </body>
26 </html>
第五个:获取请求参数还要手工解码
不明白 Java 为啥不自动解码,是不是有地方可以配置?有知道的兄弟告诉我一下。
1 <%@page import="java.net.URLDecoder"%>
2 <%@ page language="java" contentType="text/html; charset=utf-8"
3 pageEncoding="utf-8"%>
4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5 <html>
6 <head>
7 <meta http-equiv="Content-Type" content="text/html; utf-8">
8 <title>request study</title>
9 </head>
10 <body>
11 <p>to get the parameter,you must set the character encoding first.</p>
12 <%
13 request.setCharacterEncoding("utf-8");
14 %>
15 <p>
16 get love:
17 <%
18 if (request.getParameter("love") != null) {
19 %>
20 <%=new String(request.getParameter("love").getBytes(
21 "iso-8859-1"), "utf-8")%>
22 <%
23 }
24 %>
25 </p>
26 <p>
27 post name:<%=request.getParameter("name")%></p>
28 <form method="get">
29 get form<input type="text" name="love" value="段光伟" /> <input
30 type="submit" />
31 </form>
32 <form method="post">
33 post form<input type="text" name="name" value="段光伟" /> <input
34 type="submit" />
35 </form>
36 </body>
37 </html>
备注
将自己的遇到的问题记录下来,即使是“白痴”级别的问题。
|