文件的上传下载: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,证明已经重复,不允许提交。