http://www.cnblogs.com/mailingfeng/archive/2011/12/21/2296105.html.
http://www.boyunjian.com/ 拨云剑
http://www.th7.cn/Program/java/201411/313875.shtml
/**
* ----xiaowu
*
* 随机数的生成
* @param nRandomCount 随机数的位数
* @param isNumber ---true:随机数全为数字;false:随机数为数字字母混编;
* @return
*/
public static String getRandomString(int nRandomCount, boolean isNumber) {
char[] a = null;
if (isNumber) {
a = new char[10];
for (int i = 48, j = 0; i <= 57; i++, j++) {
a[j] = (char) i;
}
} else {
// ASCII 48~57,String 0~9;
// ASCII 65~90,String A-Z;
// ASCII 97~122,String a-z;
a = new char[62];
for (int i = 48, j = 0; i <= 122; i++) {
if ((i > 57 && i < 65) || (i > 90 && i < 97)) {
continue;
} else {
a[j] = (char) i;
j++;
}
}
}
String strRand = "";
int LengthOfRandom = a.length;
Random random = new Random();
for (int i = 0; i < nRandomCount; i++) {
int nRand = random.nextInt(LengthOfRandom);
strRand += a[nRand];
}
return strRand;
}
private static String getMD5(String str) {
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
System.out.println("NoSuchAlgorithmException caught!");
System.exit(-1);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] byteArray = messageDigest.digest();
StringBuffer md5StrBuff = new StringBuffer();
for (int i = 0; i < byteArray.length; i++) {
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
else
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
return md5StrBuff.toString();
}
/**
*
*/
package com.houtai.web.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.houtai.po.User;
/**
* 自定义拦截器
* @author wuzhq
* @date Nov 5, 2011
*/
public class MyInterceptor extends HandlerInterceptorAdapter {
/**
* 最后执行,可用于释放资源
*/
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
super.afterCompletion(request, response, handler, ex);
}
/**
* 显示视图前执行
*/
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
//System.out.println(request.getContentType()+"-----"+request.getCharacterEncoding()+"------"+request.getContextPath());
//System.out.println("MyInterceptor.postHandle()---viewName:"+modelAndView.getViewName());
super.postHandle(request, response, handler, modelAndView);
}
/**
* Controller之前执行
*/
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String url = request.getRequestURI();
System.out.println("MyInterceptor.preHandle()"+url);
User htUser = (User) request.getSession().getAttribute("htUser");
if(htUser == null || htUser.getId()== null)
{
request.getRequestDispatcher("/ht.jsp").forward(request, response);
return false;
}
/**
String param = request.getParameter("type");
if(param!=null)
{
url= url+"?type="+param;
}
List <Function> list = user.getResourceList();
boolean flag = false;
for(Function func:list)
{
String userUrl = func.getUrl();
if(url.indexOf(userUrl)!=-1||(param!=null&&userUrl.indexOf("type="+param)!=-1))
{
flag = true;
break;
}
}
if(!flag && param!=null){
//request.setAttribute("msg", "您没有此权限!请重新登录");
request.getRequestDispatcher("./index.jsp").forward(request, response);
return false;
}
**/
return super.preHandle(request, response, handler);
}
}
<!-- 这里拦截器还有一种配置方法【针对路径进行配置】 推荐使用这个,方便直观-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/qt/meeting*"/>
<bean class="com.houtai.web.interceptor.MyInterceptorForQt"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/ht/*"/>
<bean class="com.houtai.web.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
相关推荐
除了基本的装饰器配置之外,还可以对`sitemesh3.xml`进行更细致的配置: - **支持多种MIME类型**: ```xml <mime-type>text/html</mime-type> <mime-type>application/vnd.wap.xhtml+xml <mime-type>application...
【sitemesh3-demo】是一个基于Sitemesh3框架的示例项目,旨在展示如何在Web应用程序中有效地实现页面布局和装饰功能。Sitemesh是一个开源的Java Web应用框架,主要用于增强网页的外观和结构,通过定义装饰模板,可以...
**SpringMVC、Freemarker与Sitemesh3详解** SpringMVC是Spring框架的一部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)架构。SpringMVC提供了一个灵活的处理机制,包括处理器映射、视图解析、数据绑定...
**Sitemesh3** 是一个开源的网页布局和装饰框架,用于Java Web应用程序。它主要目的是帮助开发者统一网站的外观和感觉,通过提供一种简单的方式来装饰(或模板化)整个Web应用中的页面。Sitemesh3是Sitemesh项目的第...
springmvc + mybatis + sitemesh3 超简洁例子 整合springmvc mybatis 方法请看: http://blog.csdn.net/kokoyuo/article/details/52808510
在本项目中,我们探索的是一个基于Spring MVC、MyBatis和Sitemesh3的超简洁登录示例,其中还集成了MySQL数据库和MD5加密验证。这是一个经典的Java Web开发框架组合,常用于构建高效、可扩展的企业级应用。下面我们将...
`sitemesh3demo附配置说明`这个主题涉及到的是一个使用Sitemesh3框架的演示项目,其中包含了配置的详细指南。Sitemesh是一个开源的Web应用程序模板引擎和页面装饰框架,它主要用来帮助开发者实现网页布局、样式统一...
**Sitemesh3 SDK详解** Sitemesh 是一个开源的 Web 应用程序框架,用于增强网站的布局和装饰功能。Sitemesh3 是其第三个主要版本,它提供了更现代的架构和更好的性能,旨在帮助开发者更高效地管理和美化他们的网页...
sitemesh3插件是Web应用中用于页面布局和装饰的一种工具,它能够帮助开发者统一网站的外观和感觉,实现页面头部、底部、侧边栏等元素的共用,提高开发效率并增强用户体验。Sitemesh3是Sitemesh框架的第三个主要版本...
springmvc + mybatis + sitemesh3 简洁例子 springmvc + mybatis 整合过程: http://blog.csdn.net/kokoyuo/article/details/52808510
- **核心库**:`sitemesh3.jar` 包含了Sitemesh的核心实现,包括过滤器、装饰器解析、页面内容与装饰器的合并逻辑等。 - **源码文件**:源代码文件可以帮助开发者跟踪代码流程,理解Sitemesh如何处理HTTP请求和响应...
##### 3. 配置装饰器 - 创建装饰器配置文件`[web-app]/WEB-INF/decorators.xml`。 - 文件结构示例: ```xml <!-- 在这里定义装饰器 --> ``` ##### 4. 可选配置 - 创建可选配置文件`[web-app]/WEB-INF/...
标题:Sitemesh技术的应用 描述与标签:Sitemesh技术的应用 Sitemesh技术是Web开发领域中一种用于页面装饰的重要工具,尤其在Java Web应用程序中被广泛应用。其核心功能在于能够统一网站的外观风格,使不同功能...
spring-boot-sitemesh 源码整合
3. **负载测试**:模拟不同并发用户数量,观察系统的响应时间。 **实验结果** - 在低并发情况下,使用SiteMesh对性能影响不大。 - 随着并发用户数的增加,使用SiteMesh的应用程序响应时间略有提升,但整体仍然稳定...
3. **定义装饰模板**:SiteMesh允许你创建一个或多个装饰模板,这些模板定义了页面的结构,如页眉、页脚、侧边栏等。你可以使用HTML或者JSP来编写模板。 4. **应用装饰**:通过在JSP页面中使用特殊的注解(例如`<@...
Sitemesh是一款强大的Web页面布局和装饰框架,它主要用于帮助开发者实现网站的统一外观和感觉。这个框架的主要功能是将页面的主体内容与页眉、页脚、侧边栏等通用部分分离,使得在大量网页中保持一致的设计风格变得...
Java Sitemesh是一个开源的页面布局和装饰框架,它的主要目标是帮助开发者统一网站的外观和感觉,提高代码复用性,并简化页面的复杂性。Sitemesh通过将页面分为内容区域和装饰模板来实现这一目标,使得开发者可以...
3. **模块化**:易于添加、修改和重用页面组件。 4. **可扩展性**:支持与其他模板引擎集成,适应各种开发需求。 然而,Sitemesh也有其局限性,例如对于JavaScript驱动的单页应用(SPA)支持不够理想,因为它主要是...
3. **配置SiteMesh**: 在`sitemesh.xml`中指定布局文件的位置和装饰策略。 4. **标记页面内容**: 在需要装饰的JSP或HTML页面中添加特殊的SiteMesh注释或标签,告知SiteMesh如何插入到布局文件中。 5. **运行应用**...