java web系统初构建之要点
开发一个最普通的java web项目。框架和数据库设计好之后开始编码,开始的时候需要考虑的有:
1.拦截器。防止非登录情况下登录;登录的时候记录进入日志文件。贴上一个简单列子:
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
Locale locale = RequestContextUtils.getLocaleResolver(request).resolveLocale(request);
request.getSession().setAttribute("currentLocale",locale.getLanguage());
boolean isLogin = true;
String contextPath = request.getContextPath();
String requestURI = request.getRequestURI();
if(!isIgnoreURI(contextPath,requestURI)){
if(request.getSession().getAttribute(Constant.CURRENT_USER) == null){
logger.info("User is not logged. Visit the URI:" + requestURI);
isLogin = false;
response.sendRedirect(contextPath + "/tologin.sa");
}
}
return isLogin;
}
/**
* @Title: isIgnoreURI
* @Description: 是否为忽略的URI(不进行拦截的URI)
* @param root 项目名称
* @param uri 访问的URI
* @return boolean 是则返回TRUE,不是则返回FALSE
* @throws
*/
private boolean isIgnoreURI(String root,String uri){
boolean flag = false;
if(isStaticResource(uri) || isWhiteSet(root, uri) || isWhiteList(root, uri)){
flag = true;
}
return flag;
}
日志的记录拦截器:
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
Map<String,String> parameterMap = new ParameterMap<String,String>();
Enumeration<String> enumeration = request.getParameterNames();
while(enumeration.hasMoreElements()){
String str = enumeration.nextElement();
String[] values = request.getParameterValues(str);
StringBuffer valueStrBuffer = new StringBuffer("[");
for(int i = 0; i < values.length; i++){
valueStrBuffer.append(values[i] + ",");
}
int index = valueStrBuffer.lastIndexOf(",");
valueStrBuffer.replace(index, index + 1, "");
valueStrBuffer.append("]");
parameterMap.put(str, valueStrBuffer.toString());
}
if(parameterMap.keySet().size() > 0){
logger.info("User visits: " + request.getRequestURI() + ", request parameter:" + parameterMap);
}
return true;
}
2.考虑session管理。包括session多久过期,session存入等内容。以及如果获取session都可以自己封装方法。
3.登录处理。这个是最常见的了。
4.异常处理。一般的代码我们都需要自己定义很多异常来进行处理。