First J2EE Application心得记录

自己动手写了个J2EE应用,其实没有这么夸张了,只是用到其中很小的内容,感觉有些杀鸡用牛刀了,哈哈。
现在随笔一下:
[color=blue]希望Web页面打开时为所需的字符编码[/color]
问题起源:浏览器中看到的 Jsp/Servlet 页面中的汉字怎么都成了"?"。
页面开始处加上:
<%@ page contentType="text/html; charset=UTF-8" %>

在<head>和</head>之间加上:
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
此处要注意的是,使用UTF-8编码的页面需要保存时以UTF-8的编码形式保存页面文件。如果声明为其他编码,则选择普通编码保存即可。

[color=blue]使用css样式表单[/color]
在<head>和</head>之间加上:
<LINK rel="stylesheet" type="text/css" href="./css/query.css">

href根据url来定位,可以多写几个来显示。

[color=blue]request中取数组形式的参数[/color]
当在页面上提交了多个同名参数A后,在request中取参数A的结果为一个String
数组,取法为:
String[] A = request.getParameterValues("A");;


[color=blue]getParameter()取出的为String对象[/color]
所有用这个方法取出的对象都是String对象,可以根据需要再作转换。如果取的参数不存在,则返回null;如果参数存在但没有值,返回空字串,即""。所以在比较时应该遵循对象的比较原则。

[color=blue]request中加入其他对象[/color]
使用如下语句加入对象:
request.setAttribute("objname", obj);;
该obj可以为任何类型的对象。

[color=blue]取出request中加入的对象[/color]
使用如下语句取出对象:
OBJ sss = (OBJ);request.getAttribute("objname");;

OBJ为obj的类名。此处取出时需要考虑类型的转换。

[color=blue]页面重定向[/color]
如果使用:
response.sendRedirect("~~~");
使用前提是没有向response写入任何信息,而向request加入的新信息或者新对象是不会被专抛到新的资源上的。重定向成功后,url停在重定向后的url上。
如果使用:
RequestDispatcher rd = request.getRequestDispatcher("~~~");;
rd.forward(request, response);;
则将request和response(包括新加入到request中的信息和对象)转抛到新的资源上。重定向成功后,url停在调用rd的资源上,所以,使用此方式要注意新资源~~~应该以调用rd的资源的url为准。

[color=blue]其实,JSP和Servlet是类似的[/color]
开始同事说的时候不解,后来仔细琢磨,发现确是如此。 :P

[color=blue]FORM提交方式[/color]
方式为get:会在url中显示出来参数=值。
方式为post:不会在url中显示出来。

[color=blue]FORM中提交中文字符[/color]
注:我这个比较特殊些,都是基于UTF-8的编码处理的
在用request取出来之前需要设置request的Encoding,语法如下:
request.setCharacterEncoding("UTF-8");;
表明提交过来的数据是用UTF-8编码的。根据此类推,其他也应该是一样的吧。推荐使用UTF-8,这样简体和繁体文件就不头疼了。

[color=blue]返回生成页面字符问题[/color]
JBuilber中的Servlet向导生成的代码中有讲解。
private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
response.setContentType(CONTENT_TYPE);;
剩下的利用
PrintWriter out = response.getWriter();;
完成页面输出。根据此类推,其他也应该是一样的吧。推荐使用UTF-8,这样简体和繁体文件就不头疼了。

[color=blue]提交的数据验证问题[/color]
应该在客户端和服务器端都进行验证,比如是否为空,或者格式是否正确。
浏览器客户端当然首选JavaScript,服务器端使用Exception流程来处理比较好。

[color=blue]在服务器端验证数据[/color]
假设我们仅仅需要验证是否为空和能够分析出数字来,可以生成一个类来完成验证工作。当出现为空或者无法分析数字出来时,我们分别抛出带msg的相应的异常。
[color=green]

public static void checkTheSubmitData(String value, String msg); throws
NullValueException {
if (null == value || "".equals(value);); {
throw new NullValueException(msg);;
}
}
[/color]上面用来验证是否为空,为空抛出NullValueException异常,该异常是自定义的。msg为提供的信息,比如我们取参数时,可以告诉msg为"某某某",那么之后使用打印信息将该信息打印出来,客户就知道是什么出错。
[color=green]

public static void checkTheSubmitDataFMT(String value, String msg); {
try {
Integer.parseInt(value);;
}
catch (NumberFormatException ex); {
throw new NumberFormatException(msg);;
}
}
[/color]
这个方法用来验证是否可以分析出数字来,之后我们使用打印信息方法来告诉客户出错在哪里。

public static void outPrintExceptionMsg(PrintWriter out, String msg,
HttpServletResponse response); {
此处写上你返回的信息即可。
}

使用时捕获对应的异常,在处理中调用该打印方法来输出信息。

[color=blue]在客户端验证数据[/color]
主要是用JavaScript来处理。
代码网上的例子很多,关键一点就是需要用对象来想象form中的name即可,然后生成function来判断信息,不正确就return false;即可。

哎,弄个小型的Web Application需要知道的东西还真不少,起码HTML要知道吧,URL概念要很清楚吧,JSP技术就不用说了,JavaScript也少不了,数据库就别谈了,呵呵,Servlet也要知道,否则怎么去理解JSP和Servlet是类似的呢。好了,Web Server需要搞一个吧,还好,有个Tomcat比较省事点,天,还有什么要会的,当然是Java基础了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值