java 小菜鸟问题1

1. 异常转换为字符串

public static String getExceptionMessage(Exception ex) {
  StringWriter sw = new StringWriter();
  PrintWriter pw = new PrintWriter(sw);
  ex.printStackTrace(pw);
  return sw.toString();
 }

2.spring 中获取当前request..

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

3.对于前台extjs的,可固定controller中格式,自定义一个传出类。。转成json返回

public class AjaxJson {

 private boolean success = true;// 是否成功
 private String msg = "操作成功";// 提示信息
 private Object obj = null;// 其他信息

private QueryResult<T> records;
 private Map<String, Object> attributes;// 其他参数
4. 根据request获取浏览器类型

private final static String IE10 = "MSIE 10.0";
 private final static String IE9 = "MSIE 9.0";
 private final static String IE8 = "MSIE 8.0";
 private final static String IE7 = "MSIE 7.0";
 private final static String IE6 = "MSIE 6.0";
 private final static String MAXTHON = "Maxthon";
 private final static String QQ = "QQBrowser";
 private final static String GREEN = "GreenBrowser";
 private final static String SE360 = "360SE";
 private final static String FIREFOX = "Firefox";
 private final static String OPERA = "Opera";
 private final static String CHROME = "Chrome";
 private final static String SAFARI = "Safari";
 private final static String OTHER = "其它";

 

 public static String checkBrowse(HttpServletRequest request) {
  String userAgent=request.getHeader("USER-AGENT");
  if (regex(OPERA, userAgent))
   return OPERA;
  if (regex(CHROME, userAgent))
   return CHROME;
  if (regex(FIREFOX, userAgent))
   return FIREFOX;
  if (regex(SAFARI, userAgent))
   return SAFARI;
  if (regex(SE360, userAgent))
   return SE360;
  if (regex(GREEN, userAgent))
   return GREEN;
  if (regex(QQ, userAgent))
   return QQ;
  if (regex(MAXTHON, userAgent))
   return MAXTHON;
  if (regex(IE10, userAgent))
   return IE10;
  if (regex(IE9, userAgent))
   return IE9;
  if (regex(IE8, userAgent))
   return IE8;
  if (regex(IE7, userAgent))
   return IE7;
  if (regex(IE6, userAgent))
   return IE6;
  return OTHER;
 }

 public static boolean regex(String regex, String str) {
  Pattern p = Pattern.compile(regex, Pattern.MULTILINE);
  Matcher m = p.matcher(str);
  return m.find();
 } 

5.实现跳转

return new ModelAndView(new org.springframework.web.servlet.view.RedirectView("loginController.do?login"));

6.别忘了使用带参数的requestMapping

@RequestMapping(params = "user")

7.针对已完成的方法类,可以右键添加 junit Test Case.可自动生成方法对应的test方法

8.可在系统启动时,初始化一些 类似数据字典的信息放入map. 方便使用。减少访问时间

9.确定的是前台页面 会调用后台,需要一个action...在action中处理所有逻辑。---。提取一个Service层处理业务逻辑。。。

但是是否需要单独的一个DAO层处理数据库操作。。是每个表一个dao还是通用一个commondao...

假设每个表创建一个dao..那么对于需要多表联合操作的sql 数据库操作该放哪里???以及Service之间是否互相调用?

10.先做个通用的前后台,针对单表进行增删改。比如前台一个grid,一个新增,修改,删除,查询的按钮,后台一个deleteAction和一个SaveAction(根据id判断是新增还是修改)再加一个查询。。。。

这样就能尽快看到效果,然后再根据实际业务细化

11.权限,报表的,工作流的。。。

 权限,权限折腾好久好久了,天天打酱油。。

其实很简单的,和常见的一样基于角色的。。((用户。。用户角色关系。。角色。。角色权限关系。。权限。。权限资源关系。。资源))仅此而已。

除了在权限设置页面本身,可能需要的查询很多样,但更多的都是通过( 用户。。资源)参数, 获取相应的权限信息。。

至于在权限管理页面:获取指定用户 a.已授权的所有资源 b.所在的角色组 c 所管理的角色组

                  ,and 获取指定角色   a.已授权的资源 b.已拥有的权限,c.角色成员   d 角色管理员,,

加上部门,变得更复杂点。。。。统一授权,分级授权,权限嵌套。权限规则

 

12.spring的web service, 要尽快看下,最少能够搭建一个最简单的调用,已替换之前的cxf方式的webservice

http://www.iteye.com/topic/152556

 

 

 

 

 

posted @ 2013-07-10 22:15  9421  阅读(324)  评论(0编辑  收藏  举报