欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

First J2EE Application心得记录 JavaJavaScriptServletJSP应用服务器 

程序员文章站 2022-05-30 11:00:43
...
自己动手写了个J2EE应用,其实没有这么夸张了,只是用到其中很小的内容,感觉有些杀鸡用牛刀了,哈哈。
现在随笔一下:
希望Web页面打开时为所需的字符编码
问题起源:浏览器中看到的 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的编码形式保存页面文件。如果声明为其他编码,则选择普通编码保存即可。

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

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

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


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

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

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

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

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

其实,JSP和Servlet是类似的
开始同事说的时候不解,后来仔细琢磨,发现确是如此。First J2EE Application心得记录
            
    
    
        JavaJavaScriptServletJSP应用服务器 

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

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

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

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

在服务器端验证数据
假设我们仅仅需要验证是否为空和能够分析出数字来,可以生成一个类来完成验证工作。当出现为空或者无法分析数字出来时,我们分别抛出带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); {
此处写上你返回的信息即可。
}

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

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

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