码迷,mamicode.com
首页 > 编程语言 > 详细

java中的一些组件

时间:2015-09-30 10:56:09      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:

文件的上传下载:common fileupload  (文件大小<做缓存>,文件转码,文件类型,)

excel,word,pdf导出:poi

xml解析:DOM4J

邮件:commons,email

验证码:captcha

拼音解析:pinyin4J

定时任务:quartz

orm框架:hibernate,ibatis

mvc:Struts2,springmvc4

 

 

使用strusts2.x

1导入jar包

2配置web.xml中配置Struts2中央控制器(过滤器)

3创建struts.xml文件

4创建action类

5配置Struts.xml

 

1执行action中的业务方法:

result不写name为success

hello!find.action

2在Struts.xml中的配置

<action name="" class="" method="" >

3在url中通过!+方法名形式执行方法

4通过通配符*来指定调用方法

<action name="Hello.*" class="" method="">

5修改Struts2的默认扩展名

5.1创建Struts.properties

5.2struts.action.extension=do,xyz,

 

 

struts2.X中常用的跳转方式

1,dispatcher 以请求转发的形式去页面

2,redirect 以重定向的方式去页面

3,chain 以请求的方式去action

4,redirectAction 以重定向的方式去action

 

token机制(Struts中知识点)

http://www.cnblogs.com/yixianbin/articles/1440397.html

Struts Token 使用

1,先在一个Action中,调用saveToken(HttpServletRequest request)方法。然后转向带有表单的JSP页面。

2,在JSP页面提交表单给一个Action,再这个Action中进行是否为重复提交的判断。

              if (isTokenValid(request, true)) {
                     // 未重复提交时,正确的时候应该做的事情
                  return mapping.findForward("success");
              } else {
            // 重复提交时,需要做的事情
                  saveToken(request);
                  return mapping.findForward("error");
              }

Struts Token 机制:

1,  由第一个Action调用saveToken(HttpServletRequest request),这个方法内部实现如下:

    protected void saveToken(HttpServletRequest request) {
        token.saveToken(request);
}

token.saveToken(request);

       这个方法的实现如下:

    public synchronized void saveToken(HttpServletRequest request) {
        HttpSession session = request.getSession();
        String token = generateToken(request);
        if (token != null) {
            session.setAttribute(Globals.TRANSACTION_TOKEN_KEY, token);
        }
}

这个方法调用generateToken方法实现如下:

public synchronized void saveToken(HttpServletRequest request) {

    HttpSession session = request.getSession();
        String token = generateToken(request);
        if (token != null) {
            session.setAttribute(Globals.TRANSACTION_TOKEN_KEY, token);
        }
}

generateToken完毕后,将得到的唯一值setAttribute到session中。

            session.setAttribute(Globals.TRANSACTION_TOKEN_KEY, token);

Globals.TRANSACTION_TOKEN_KEY的值是:” org.apache.struts.action.TOKEN”

然后跳转到JSP页面。

2,  JSP页面的Struts自定义标签 <html:form>的标签类:org.apache.struts.taglib.html. FormTag

这个类的doStartTag()方法会调用本类的renderToken()方法。

    protected String renderToken() {
        StringBuffer results = new StringBuffer();
        HttpSession session = pageContext.getSession();

        if (session != null) {
           String token = (String) session.getAttribute(Globals.TRANSACTION_TOKEN_KEY);
            if (token != null) {
                results.append("<input type=\"hidden\" name=\"");
                results.append(Constants.TOKEN_KEY);
                results.append("\" value=\"");
                results.append(token);
                if (this.isXhtml()) {
                    results.append("\" />");
                } else {
                    results.append("\">");
                }
            }
        }
        return results.toString();
}

这样子会生成类似于

<input type="hidden" name="org.apache.struts.taglib.html.TOKEN" 
         value="6aa35341f25184fd996c4c918255c3ae">

的隐藏标签。

 

然后提交到一个Action中,在Action中用isTokenValid()方法进行比较session中” org.apache.struts.action.TOKEN”的这个key所对应的值和提交来的request中的” org.apache.struts.action.TOKEN”的这个value是否一致。

如果为true,那么证明可以提交。如果为false,证明已经重复,不允许提交。

 

java中的一些组件

标签:

原文地址:http://www.cnblogs.com/shininguang/p/4818508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!