抽奖程序总结
1.entity,model,dao,service,controller关系
//不允许更新的
updatetable = false;
//删除标记(伪删除)
@Column(name = "del", unique = false, nullable = false, columnDefinition = "smallint default 0")
private int del;
- model存需要用到的数据,但不一定对数据库进行操作,
例如伪删除(用删除标记)
2.SpringMVC传参
(Model model) model.addAttribute();
//传参时要注意数据类型与表中相同 否则会报404
3.数据类型
Integer是一个类,可以在int和String之间相互转换,可以存0,null;
定义数据类型的时候不定义int,都定义成Integer
4.id这样写
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
//把id传到后台findById方法,并在后台查询该id对应的那条数据
var id = rows[0].id;
window.location.href="/ddcrm/sharer/cj/"+id;
//抽完奖后更新prize参数
function update(result) {
sharer.prize = result;
var posting = $.post(webBasePath + 'sharer/updatecj', sharer,function() {
$('#dataList').datagrid('reload');
});
}
//获取当前时间,把当前时间赋值给date
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//String类型
String date = formater.format(new Date()); 、
//Date类型
Date nowdate=formater.parse(date);
//获取当前上传文件的文件名,文件大小,文件类型
//文件上传的<input>name值
var input = document.getElementById("sharerUpload");
input.addEventListener('change',readFile,false);
var params = {};
function readFile(){
var file = this.files[0];
params.name = file.name;
params.type = file.type;
}
//后台取值request.getParameter("name");因为前台传的是jason字符串,可以直接获取到值。
//前台EL表达式可取值:
Sharer sharer = new Sharer();
sharer = sharerService.getSharerById(id);
model.addAttribute("sharer",sharer);
//js通过 a标签的onclikc 传值并调用js里的方法
return "<a href='javascript:void(0)' onclick = downLoad(\""+ name +"\",\""+ url2 +"\") >下载附件</a>"
//前台js通过get方法往后台传值时 如果有中文或者特殊字符 需要转码2次,在后台还需转一次
//前台转码
var url=encodeURI(encodeURI(downloadUrl));
//后台转码
String = URLDecoder.decode(downloadUrl, "UTF-8");
下载文件:
//前台点击的按钮
formatter : function(value, row, index) {
var dowloadId = row.id;
console.log("downLoadId:" + dowloadId);
url1 = row.sharerFileUpUrl;
downloadUrl = url1.replace(/\\/g,"\\\\");
if (name != null) {
return "<a href='javascript:void(0)' onclick = downLoad(\""+ downloadUrl +"\") >下载附件</a>"
}
}
//前台下载方法
function downLoad(downloadUrl){
var url=encodeURI(encodeURI(downloadUrl));
console.log("url1: " + JSON.stringify(url));
var url = webBasePath + '/sharerupload/download?downloadUrl='+url;
console.log("url2: " + JSON.stringify(url));
window.open(url);
}
//后台(FileUtil是已经写好的方法)
/**
* 下载文件
*
* @return
* @return sharer/upload
*/
@RequestMapping(value = "/download")
public void downloadFile(HttpServletResponse response, HttpServletRequest request, String downloadUrl) {
try {
String msg;
String filePath = URLDecoder.decode(downloadUrl, "UTF-8");
System.out.println("filePath------->" + filePath);
String fileName = filePath.substring("D:\\media\\ddcrm\\Sharer\\".length(), filePath.length());
System.out.println("fileName------->" + fileName);
FileUtil.downloadFile(response, filePath, fileName);
msg = "下载成功!";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//在js里,最好不要通过el表达式获取后台的值,建议用下列方法
<input type="hidden" data-options="required:false" id="roles" name="roles" value="${currentUser.roles}" ></input>//jsp里代码
var roles = $('#roles').val();//js里代码
//js中获得当前毫秒数
var nowDate = new Date();
nowDate = nowDate.getTime();
//js中将时间(date)转化为毫秒数
var dateHaoMiao = (new Date(date)).getTime();
**
后期
**
1.js里最好不要定全局变量
2.script标签末尾async,放在head里。这样做可以一边下载js(只能同时下载两个js),一边解析html
<script type="text/javascript" src="path/to/script1.js" async></script>
<script type="text/javascript" src="path/to/script2.js" async></script>
3.js里用if作判断时一次最好只写一个同类型的条件,这样就可以针对不同的条件给出对应的showMsg();对用户友好。
4.全局变量var = ,页面每加载一次全局变量就加载一次。