work note

1.日志记录器

 log4j具有5种正常级别(Level):

 static Level DEBUG 指出细粒度信息时间对调试应用程序非常有帮助。

 static Level INFO 表明信息在粗粒度级别上突出强调应用程序的运行过程。

 static Level WARN 表明会出现潜在错误的情形。

 static Level ERROR 指出虽然发生错误事件,但仍然不影响系统继续运行。

 static Level FATAL 指出每个严重的错误事件将会导致应用程序的退出。

 

 static Level ALL 最低等级的,用于打开所有的日志记录。

 static Level OFF 最高等级的,用于关闭所有日志记录。

 

日志记录器只输出那些级别高于或等于它的级别的信息。

优先级从高到低分别是 FATAL(致命错误)、ERROR(错误)、WARN(警告)、INFO(信息)、DEBUG(调试)

 

2.json

json表示数组:

{"city":"Beijing","street":"Chaoyang Road ","postcode":100025}

 

1.js处理json数据

  我们需要做的仅仅是发送一个 Ajax 请求,然后将服务器返回的 JSON 数据赋值给一个变量即可。有许多 Ajax 框架早已包含了处理 JSON 数据的能力,例如 Prototype(一个流行的 JavaScript 库:http://prototypejs.org)提供了 evalJSON() 方法,能直接将服务器返回的 JSON 文本变成一个 JavaScript 变量:

new Ajax.Request("http://url", {
 method: "get",
 onSuccess: function(transport) {
  var json = transport.responseText.evalJSON();
  // TODO: document.write(json.xxx);
 }
});

2.服务器端输出json格式数据

将 String 对象编码为 JSON 格式时,只需处理好特殊字符即可。将 Number 表示为 JSON 就容易得多,利用 Java 的多态,我们可以处理 Integer,Long,Float 等多种 Number 格式:

static String number2Json(Number number) {
  returnnumber.toString();
}

  Boolean 类型也可以直接通过 toString() 方法得到 JSON 的表示:

static String boolean2Json(Boolean bool) {
  returnbool.toString();
}

  要将数组编码为 JSON 格式,可以通过循环将每一个元素编码出来:

  1. static String array2Json(Object[] array) {  
  2.   if (array.length==0)  
  3.     return "[]";  
  4.   StringBuilder sb = new StringBuilder(array.length << 4);  
  5.   sb.append('[');  
  6.   for (Object o : array) {  
  7.     sb.append(toJson(o));  
  8.     sb.append(',');  
  9.   }  
  10.   // 将最后添加的 ',' 变为 ']':  
  11.   sb.setCharAt(sb.length()-1, ']');  
  12.   return sb.toString();  
  13. }  

  最后,我们需要将 Map<String, Object> 编码为 JSON 格式,因为 JavaScript 的 Object 实际上对应的是 Java 的 Map<String, Object> 。该方法如下:

  1. static String map2Json(Map<String, Object> map) {  
  2.   if (map.isEmpty())  
  3.     return "{}";  
  4.   StringBuilder sb = new StringBuilder(map.size() << 4);  
  5.   sb.append('{');  
  6.   Set<String> keys = map.keySet();  
  7.   for (String key : keys) {  
  8.     Object value = map.get(key);  
  9.     sb.append('"');  
  10.     sb.append(key);  
  11.     sb.append('"');  
  12.     sb.append(':');  
  13.     sb.append(toJson(value));  
  14.     sb.append(',');  
  15.   }  
  16.   // 将最后的 ',' 变为 '}':  
  17.   sb.setCharAt(sb.length()-1, '}');  
  18.   return sb.toString();  
  19. }  

3.springMVC注解

  @responsebody     表示该方法的返回结果直接写入HTTP response body中
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。

  @requestMapping      处理请求

 

4.项目开发常用

  1)页面初始查询(返回json格式数据到页面)

   Controller.java

    @RequestMapping("/findCorporation.do")

    public@ResponseBody JSONfindCorporationByResourceNo(@RequestParam("resourceNo") String resourceNo){

       JSON json = null;

       try {

           Corporation corp = CacheLoadUtil.getCorpByResourceNo(resourceNo);

           json = JSONObject.fromObject(corp);

       } catch (Exception e) {

           log.info("查询公司出现异常!",e);

           thrownew SystemException("查询公司出现异常!",e,DBErrorCode.QUERY_ERROR);

       }

       return json;

    }

 

2)添加

controller.java

@RequestMapping("/addCorporation.do")

   public String addCorporation(@ModelAttribute("newCorp")Corporation corp,HttpServletRequest request) throws SystemException {

      try {

         StringloginId = SSOConstant.getLoginId(request.getSession(false));

         corp.setCreatedBy(loginId);

         corp.setUpdatedBy(loginId);

         corporationService.add(ObjectCreateUtil.createCorporation(corp));

      } catch (Exception e) {

         log.error("保存公司出现异常!",e);

         thrownew SystemException("保存公司出现异常!",e,NormalErrorCode.DB_ERROR);

      }

      return"redirect:/corp/toCorporationPage.do";

   }

3)删除

  @RequestMapping("/delCorporation.do")

   public@ResponseBody StringdelCorporation(@RequestParam("resourceNo") String resourceNo,HttpServletRequest request) throws SystemException{

      try {

         corporationService.removeCorporationByResourceNo(resourceNo);

         return"success";

      } catch (Exception e) {

         log.error("删除公司出现异常!",e);

         thrownew SystemException("删除公司出现异常!",e,NormalErrorCode.DB_ERROR);

      }

     

   }

4)修改

  @RequestMapping("/editCorporation.do")

   public@ResponseBody StringeditCorporation(@ModelAttribute("editCorp") Corporation corp,HttpServletRequest request) throws SystemException {

      Stringmessage = "";

      try {

         StringloginId = SSOConstant.getLoginId(request.getSession(false));

         corp.setUpdatedBy(loginId);

         corporationService.modify(corp);

         message= "success";

      }catch (Exception e) {

         message= "更新公司出现异常!";

         log.error(message,e);

         thrownewSystemException(message,e,NormalErrorCode.DB_ERROR);

      }

      return message;

   }

 

5.web.xml文件的配置

  context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息。

 加载顺序为:context-param -> listener -> filter ->servlet

 

6.readonly="readonly"  disabled="disabled" 的区别

   Disabled是按系统设置的Disabled颜色来设置前景色的,CSS对其无效!

  另外,readonly和disabled还有一个不同点就是,当input属性为readonly时,提交表单是可以获得input的内容,但是如果是disabled则不能获得所提交的内容,返回值全部为null。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值