package org.davidfang.mail;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.mail.BodyPart;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
public class ReciveMail {
private MimeMessage msg = null;
private String saveAttchPath = "";
private StringBuffer bodytext = new StringBuffer();
private String dateformate = "yy-MM-dd HH:mm";
public ReciveMail(MimeMessage msg){
this.msg = msg;
}
public void setMsg(MimeMessage msg) {
this.msg = msg;
}
/**
* 获取发送邮件者信息
* @return
* @throws MessagingException
*/
public String getFrom() throws MessagingException{
InternetAddress[] address = (InternetAddress[]) msg.getFrom();
String from = address[0].getAddress();
if(from == null){
from = "";
}
String personal = address[0].getPersonal();
if(personal == null){
personal = "";
}
String fromaddr = personal +"<"+from+">";
return fromaddr;
}
/**
* 获取邮件收件人,抄送,密送的地址和信息。根据所传递的参数不同 "to"-->收件人,"cc"-->抄送人地址,"bcc"-->密送地址
* @param type
* @return
* @throws MessagingException
* @throws UnsupportedEncodingException
*/
public String getMailAddress(String type) throws MessagingException, UnsupportedEncodingException{
String mailaddr = "";
String addrType = type.toUpperCase();
InternetAddress[] address = null;
if(addrType.equals("TO")||addrType.equals("CC")||addrType.equals("BCC")){
if(addrType.equals("TO")){
address = (InternetAddress[]) msg.getRecipients(Message.RecipientType.TO);
}
if(addrType.equals("CC")){
address = (InternetAddress[]) msg.getRecipients(Message.RecipientType.CC);
}
if(addrType.equals("BCC")){
address = (InternetAddress[]) msg.getRecipients(Message.RecipientType.BCC);
}
if(address != null){
for(int i=0;i<address.length;i++){
String mail = address[i].getAddress();
if(mail == null){
mail = "";
}else{
mail = MimeUtility.decodeText(mail);
}
String personal = address[i].getPersonal();
if(personal == null){
personal = "";
}else{
personal = MimeUtility.decodeText(personal);
}
String compositeto = personal +"<"+mail+">";
mailaddr += ","+compositeto;
}
mailaddr = mailaddr.substring(1);
}
}else{
throw new RuntimeException("Error email Type!");
}
return mailaddr;
}
/**
* 获取邮件主题
* @return
* @throws UnsupportedEncodingException
* @throws MessagingException
*/
public String getSubject() throws UnsupportedEncodingException, MessagingException{
String subject = "";
subject = MimeUtility.decodeText(msg.getSubject());
if(subject == null){
subject = "";
}
return subject;
}
/**
* 获取邮件发送日期
* @return
* @throws MessagingException
*/
public String getSendDate() throws MessagingException{
Date sendDate = msg.getSentDate();
SimpleDateFormat smd = new SimpleDateFormat(dateformate);
return smd.format(sendDate);
}
/**
* 获取邮件正文内容
* @return
*/
public String getBodyText(){
return bodytext.toString();
}
/**
* 解析邮件,将得到的邮件内容保存到一个stringBuffer对象中,解析邮件 主要根据MimeType的不同执行不同的操作,一步一步的解析
* @param part
* @throws MessagingException
* @throws IOException
*/
public void getMailContent(Part part) throws MessagingException, IOException{
String contentType = part.getContentType();
int nameindex = contentType.indexOf("name");
boolean conname = false;
if(nameindex != -1){
conname = true;
}
System.out.println("CONTENTTYPE:"+contentType);
if(part.isMimeType("text/plain")&&!conname){
bodytext.append((String)part.getContent());
}else if(part.isMimeType("text/html")&&!conname){
bodytext.append((String)part.getContent());
}else if(part.isMimeType("multipart/*")){
Multipart multipart = (Multipart) part.getContent();
int count = multipart.getCount();
for(int i=0;i<count;i++){
getMailContent(multipart.getBodyPart(i));
}
}else if(part.isMimeType("message/rfc822")){
getMailContent((Part) part.getContent());
}
}
/**
* 判断邮件是否需要回执,如需回执返回true,否则返回false
* @return
* @throws MessagingException
*/
public boolean getReplySign() throws MessagingException{
boolean replySign = false;
String needreply[] = msg.getHeader("Disposition-Notification-TO");
if(needreply != null){
replySign = true;
}
return replySign;
}
/**
* 获取此邮件的message-id
* @return
* @throws MessagingException
*/
public String getMessageId() throws MessagingException{
return msg.getMessageID();
}
/**
* 判断此邮件是否已读,如果未读则返回false,已读返回true
* @return
* @throws MessagingException
*/
public boolean isNew() throws MessagingException{
boolean isnew = false;
Flags flags = ((Message)msg).getFlags();
Flags.Flag[] flag = flags.getSystemFlags();
System.out.println("flags's length:"+flag.length);
for(int i=0;i<flag.length;i++){
if(flag[i]==Flags.Flag.SEEN){
isnew = true;
System.out.println("seen message .......");
break;
}
}
return isnew;
}
/**
* 判断是是否包含附件
* @param part
* @return
* @throws MessagingException
* @throws IOException
*/
public boolean isContainAttch(Part part) throws MessagingException, IOException{
boolean flag = false;
String contentType = part.getContentType();
if(part.isMimeType("multipart/*")){
Multipart multipart = (Multipart) part.getContent();
int count = multipart.getCount();
for(int i=0;i<count;i++){
BodyPart bodypart = multipart.getBodyPart(i);
String dispostion = bodypart.getDisposition();
if((dispostion != null)&&(dispostion.equals(Part.ATTACHMENT)||dispostion.equals(Part.INLINE))){
flag = true;
}else if(bodypart.isMimeType("multipart/*")){
flag = isContainAttch(bodypart);
}else{
String conType = bodypart.getContentType();
if(conType.toLowerCase().indexOf("appliaction")!=-1){
flag = true;
}
if(conType.toLowerCase().indexOf("name")!=-1){
flag = true;
}
}
}
}else if(part.isMimeType("message/rfc822")){
flag = isContainAttch((Part) part.getContent());
}
return flag;
}
/**
* 保存附件
* @param part
* @throws MessagingException
* @throws IOException
*/
public void saveAttchMent(Part part) throws MessagingException, IOException{
String filename = "";
if(part.isMimeType("multipart/*")){
Multipart mp = (Multipart) part.getContent();
for(int i=0;i<mp.getCount();i++){
BodyPart mpart = mp.getBodyPart(i);
String dispostion = mpart.getDisposition();
if((dispostion != null)&&(dispostion.equals(Part.ATTACHMENT)||dispostion.equals(Part.INLINE))){
filename = mpart.getFileName();
if(filename.toLowerCase().indexOf("gb2312")!=-1){
filename = MimeUtility.decodeText(filename);
}
saveFile(filename,mpart.getInputStream());
}else if(mpart.isMimeType("multipart/*")){
saveAttchMent(mpart);
}else{
filename = mpart.getFileName();
if(filename != null&&(filename.toLowerCase().indexOf("gb2312")!=-1)){
filename = MimeUtility.decodeText(filename);
}
saveFile(filename,mpart.getInputStream());
}
}
}else if(part.isMimeType("message/rfc822")){
saveAttchMent((Part) part.getContent());
}
}
/**
* 获得保存附件的地址
* @return
*/
public String getSaveAttchPath() {
return saveAttchPath;
}
/**
* 设置保存附件地址
* @param saveAttchPath
*/
public void setSaveAttchPath(String saveAttchPath) {
this.saveAttchPath = saveAttchPath;
}
/**
* 设置日期格式
* @param dateformate
*/
public void setDateformate(String dateformate) {
this.dateformate = dateformate;
}
/**
* 保存文件内容
* @param filename
* @param inputStream
* @throws IOException
*/
private void saveFile(String filename, InputStream inputStream) throws IOException {
String osname = System.getProperty("os.name");
String storedir = getSaveAttchPath();
String sepatror = "";
if(osname == null){
osname = "";
}
if(osname.toLowerCase().indexOf("win")!=-1){
sepatror = "//";
if(storedir==null||"".equals(storedir)){
storedir = "d://temp";
}
}else{
sepatror = "/";
storedir = "/temp";
}
File storefile = new File(storedir+sepatror+filename);
System.out.println("storefile's path:"+storefile.toString());
BufferedOutputStream bos = null;
BufferedInputStream bis = null;
try {
bos = new BufferedOutputStream(new FileOutputStream(storefile));
bis = new BufferedInputStream(inputStream);
int c;
while((c= bis.read())!=-1){
bos.write(c);
bos.flush();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
bos.close();
bis.close();
}
}
public void recive(Part part,int i) throws MessagingException, IOException{
System.out.println("------------------START-----------------------");
System.out.println("Message"+i+" subject:" + getSubject());
System.out.println("Message"+i+" from:" + getFrom());
System.out.println("Message"+i+" isNew:" + isNew());
boolean flag = isContainAttch(part);
System.out.println("Message"+i+" isContainAttch:" +flag);
System.out.println("Message"+i+" replySign:" + getReplySign());
getMailContent(part);
System.out.println("Message"+i+" content:" + getBodyText());
setSaveAttchPath("c://temp//"+i);
if(flag){
saveAttchMent(part);
}
System.out.println("------------------END-----------------------");
}
public static void main(String[] args) throws MessagingException, IOException {
Properties props = new Properties();
props.setProperty("mail.smtp.host", "smtp.sina.com");
props.setProperty("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props,null);
URLName urlname = new URLName("pop3","pop.qq.com",110,null,"715881036","kingsoft");
Store store = session.getStore(urlname);
store.connect();
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message msgs[] = folder.getMessages();
int count = msgs.length;
System.out.println("Message Count:"+count);
ReciveMail rm = null;
for(int i=0;i<count;i++){
rm = new ReciveMail((MimeMessage) msgs[i]);
rm.recive(msgs[i],i);;
}
}
}
|
首先还是先引入JS:
<link rel="stylesheet" type="text/css" href="${request.getContextPath() }/js/dhtmlxLayout/skins/dhtmlxlayout_dhx_web.css">
//背景皮肤样式
<script src="${request.getContextPath() }/js/dhtmlxLayout/dhtmlxcommon.js"></script>
<script src="${request.getContextPath() }/js/dhtmlxLayout/dhtmlxcommon.js"></script>
<g:include view="/dhtmlxWin.gsp"/>
<script src="${request.getContextPath() }/js/dhtmlxLayout/dhtmlxlayout.js"></script>
<script src="${request.getContextPath() }/js/dhtmlxLayout/dhtmlxcontainer.js"></script>
JS代码:
<script type="text/javascript">
var webBar,dhxLayout,dhxLayout2,tree,postionTree,tabbar,toolbar2,dhxToolbar1,attachGrid1,dhxToolbar2,roleTree,attachtreea2,attachtreea3,attachtreea3,win,dhxWins= new dhtmlXWindows(),dhxLayoutfora3,postionTree3,toolbar3;
dhxLayout = new dhtmlXLayoutObject(document.body, "3j","dhx_blue");//设置界面分块
dhxLayout.setSkin("dhx_web");//设置背景皮肤
dhxLayout.cells("a").setHeight(60);//设置“a”快的高
dhxLayout.cells("a").setText("组织机构");//给"a"的标头设置标题
//dhxLayout.cells("a").collapse();//默认"a"合并
dhxLayout.cells("a").attachObject("objId");//在"a"中取页面id="objId"的div
dhxLayout.setCollapsedText("a", "Main Page");//理论上合并"a"后显示的字段,但是没显示
dhxLayout.cells("c").setWidth(300);//给"c"设置宽
dhxLayout.cells("c").setText("组织机构");
dhxLayout.cells("c").fixSize(true,true);
dhxLayout.cells("c").hideHeader();//设置“c”的标头隐藏
tree = dhxLayout.cells("c").attachTree();//在“c”中附加一个树形结构
var a=$("#company").val()//取得页面中DIV id=company的value属性。
tree.setImagePath("${request.getContextPath()}/js/dhtmlxTree/imgs/");
//加入树形结构的图片样式
setProgress(tree,"c");
tree.loadXML("${request.getContextPath()}/department/departmentTree/?company="+a+"&&" + new Date().valueOf());//加入树形结构的XML地址。
tree.attachEvent("onClick",function(id){
var selectedItem = tabbar.getActiveTab();//获得当前活动标签的引用
if(selectedItem=="a1"){
attachGrid1.clearAndLoad("${request.getContextPath()}/department/showdepartment/"+id);
}else if(selectedItem=="a2"){
attachtreea2.deleteChildItems(0);//删除所有子节点
attachtreea2.loadXML("${request.getContextPath()}/department/showusers/"+id+"?level="+tree.getLevel(tree.getSelectedItemId()));
}else if(selectedItem=="a4"){
if(isDepartment()){
postionTree.deleteChildItems(0);
var selectedItem = tree.getSelectedItemId()//返回选定项id
postionTree.loadXML("${request.getContextPath()}/department/showposition/"+selectedItem+"?r=" + new Date().valueOf());
}
}else if(selectedItem=="a3"){
var selectedItem = tree.getSelectedItemId()
if(tree.getLevel(selectedItem)==1){
postionTree3.deleteChildItems(0);
postionTree3.loadXML("${request.getContextPath()}/department/showallposition/"+selectedItem+"?r=" + new Date().valueOf());
}
}else{
alert(selectedItme);
}
});
function setProgress(src, itemId){
if(dhxLayout != null){
src.attachEvent("onXLS", function(tree,id){dhxLayout.cells(itemId).progressOn()});
src.attachEvent("onXLE", function(tree,id){dhxLayout.cells(itemId).progressOff()});
}
}
tabbar = dhxLayout.cells("b").attachTabbar();//在“C”中加入
tabbar.setImagePath("${request.getContextPath() }/js/dhtmlxtabbar/imgs/");
tabbar.addTab("a1","部门管理","100px");
tabbar.setTabActive("a1");
tabbar.addTab("a2","部门人员管理","100px");
tabbar.addTab("a3","职位管理","100px");
tabbar.addTab("a4","职位人员管理","100px");
//tab1
dhxToolbar1 = tabbar.cells("a1").attachToolbar();
dhxToolbar1.setIconsPath("${request.getContextPath()}/resources/toolbarXml/icons/");
dhxToolbar1.loadXML("${request.getContextPath() }/resources/toolbarXml/departmenttoolbar.xml?rt=" + new Date().valueOf());
dhxToolbar1.attachEvent("onClick",function(id){
toAction(id);
});
attachGrid1 = tabbar.cells("a1").attachGrid();
attachGrid1.setImagePath("${request.getContextPath()}/js/dhtmlxGrid/skins/");
attachGrid1.enableEditEvents(false,false,false);
attachGrid1.setHeader(",");
attachGrid1.setInitWidths("100,*");
attachGrid1.init();
function toAction(id){
if(id=="newCompany"){
createWin(id,"新增公司",600,600,"${request.getContextPath()}/company/create")
}
if(id=="newDepartment"){
if(tree.getSelectedItemId() != 0 && tree.getSelectedItemId() != ""){
createWin(id,"新增部门",600,245,"${request.getContextPath()}/department/createByAdmin/")
}else{
alert("请选择一个公司或者一个部门!");
}
}
if(id=="editDepartment"){
if(tree.getSelectedItemId() != 0 && tree.getSelectedItemId() != ""){
if(tree.getLevel(tree.getSelectedItemId())==1){
alert("您选择的是公司,请选择一个部门!");
}else{
createWin(id,"编辑部门",600,245,"${request.getContextPath()}/department/createByAdmin/"+tree.getSelectedItemId())
}
}else{
alert("请选择一个部门(从第二级开始)!");
}
}
if(id=="deleDepartment"){
if(tree.getSelectedItemId() != 0 && tree.getSelectedItemId() != ""){
if(tree.getLevel(tree.getSelectedItemId())==1){
alert("您选择的是公司,请选择一个部门!");
}else{
var params = new Object();
params["id"] = tree.getSelectedItemId();
if(confirm("你确定要删除吗?")){
jQuery.post("${request.getContextPath()}/department/deleteById", params, function(data){
if(data.result == true){
alert("删除成功!");
tree.deleteItem(tree.getSelectedItemId(),false);
}else{
alert("删除失败!");
}
}, "json");
}
}
}else{
alert("请选择一个部门(从第二级开始)!");
}
}
if(id=='refreshDepartment'){
setProgress(tree, "a");
tree.deleteChildItems(0);
tree.loadXML("${request.getContextPath()}/department/departmentTree?" + new Date().valueOf());
}
if(id=="updateUser"){
if(attachtreea2.getAllChecked()==''||attachtreea2.getAllChecked()==null){
alert("请至少选择一个人员!");
}else{
if(isDepartment()){
if(confirm("你确定要更新吗?")){
var params = new Object();
params["departmentId"] = tree.getSelectedItemId();
params["person"] = attachtreea2.getAllChecked();
jQuery.post("${request.getContextPath()}/department/updateUser", params, function(data){
if(data.result == true){
alert("更新成功!");
//tree.deleteItem(tree.getSelectedItemId(),false);
}else{
alert("更新失败!");
}
}, "json");
}
}
}
}
if(id=='createUser'){
if(isDepartment()){
createWin(id,"新增人员",600,600,"${request.getContextPath()}/u/create");
}
}
if(id=='newPosition'){
if(isDepartment()){
var dId = tree.getSelectedItemId();
var pId = postionTree3.getSelectedItemId();
createWin(id,"新增职位",600,245,"${request.getContextPath()}/position/createForWin")
}
}
if(id=='editPosition'){
if(postionTree3.getSelectedItemId() != 0 && postionTree3.getSelectedItemId() != ""){
createWin(id,"编辑职位",600,245,"${request.getContextPath()}/position/createForWin/"+postionTree3.getSelectedItemId())
}else{
alert("请选择一个职位!");
}
}
if(id=='refreshPosition'){
if(attachtreea3.getAllChecked()==''||attachtreea3.getAllChecked()==null){
alert("请至少选择一个人员!");
}else{
if(confirm("你确定要更新吗?")){
var params = new Object();
params["positionId"] = postionTree.getSelectedItemId();
params["person"] = attachtreea3.getAllChecked();
jQuery.post("${request.getContextPath()}/department/updateUser2", params, function(data){
if(data.result == true){
alert("更新成功!");
//tree.deleteItem(tree.getSelectedItemId(),false);
}else{
alert("更新失败!");
}
}, "json");
}
}
}
if(id=='delePosition'){
if(postionTree3.getSelectedItemId() != 0 && postionTree3.getSelectedItemId() != ""){
var params = new Object();
params["id"] = postionTree3.getSelectedItemId();
if(confirm("你确定要删除吗?")){
jQuery.post("${request.getContextPath()}/position/deleteById2", params, function(data){
if(data.result == true){
alert("删除成功!");
postionTree3.deleteItem(postionTree3.getSelectedItemId(),false);
}else{
alert("删除失败!");
}
}, "json");
}
}else{
alert("请选择一个部门(从第二级开始)!");
}
}
if(id=="updateRole"){
if(roleTree.getAllChecked()==''||roleTree.getAllChecked()==null){
alert("请至少选择一个角色!");
}else{
if(confirm("你确定要更新吗?")){
var params = new Object();
params["positionId"] = postionTree3.getSelectedItemId();
params["roles"] = roleTree.getAllChecked();
jQuery.post("${request.getContextPath()}/position/updaterole", params, function(data){
if(data.result == true){
alert("更新成功!");
//tree.deleteItem(tree.getSelectedItemId(),false);
}else{
alert("更新失败!");
}
}, "json");
}
}
}
}
function isDepartment(){
var islabel = true;
if(tree.getLevel(tree.getSelectedItemId())==1){
alert("您选择的是公司,请选择一个部门!");
islabel = false;
}
return islabel;
}
function isCompany(){
var islabel = true;
if(tree.getLevel(tree.getSelectedItemId())!=1){
alert("您选择的是部门,请选择一个公司!");
islabel = false;
}
return islabel;
}
dhxWins.setSkin('dhx_black');
function createWin(id, title, width, height, url){
win = dhxWins.createWindow(id, 0,0, width, height);
dhxWins.window(id).keepInViewport(true);
dhxWins.window(id).denyPark();
dhxWins.window(id).setModal(true);
dhxWins.window(id).setText(title);
dhxWins.window(id).attachURL(url);
dhxWins.window(id).center();
dhxWins.window(id).show();
}
function closeWin(){
if(win != null){
win.close();
}
}
function doSaveDepartment(name,remark){
if(name==''||name==null){
alert("请输入部门名称!");
}else{
var params = new Object();
params["parentId"] = tree.getSelectedItemId();
params["level"] = tree.getLevel(tree.getSelectedItemId());
params["depname"] = name;
params["depdesc"] = remark;
jQuery.post("${request.getContextPath()}/department/saveNew", params, function(data){
if(data.result == true){
alert("添加成功!");
tree.insertNewChild(tree.getSelectedItemId(),data.newdpt.id,data.newdpt.depname);
closeWin();
}else{
alert("添加失败!");
}
}, "json");
}
}
function doSavePosition(name,remark){
if(name==''||name==null){
alert("请输入职位名称!");
}else{
var params = new Object();
params["dId"] = tree.getSelectedItemId();
params["pId"] = postionTree3.getSelectedItemId();
params["posname"] = name;
params["posdesc"] = remark;
jQuery.post("${request.getContextPath()}/position/saveNew", params, function(data){
if(data.result == true){
alert("添加成功!");
postionTree3.insertNewChild(postionTree3.getSelectedItemId(),data.newpsn.id,data.newpsn.posname);
closeWin();
}else{
alert("添加失败!");
}
}, "json");
}
}
function doEditDepartment(id,name,remark){
if(name==''||name==null){
alert("请输入部门名称!");
}else{
var params = new Object();
params["id"] = id;
params["depname"] = name;
params["depdesc"] = remark;
jQuery.post("${request.getContextPath()}/department/updateDepartment", params, function(data){
if(data.result == true){
alert("修改成功!");
tree.setItemText(tree.getSelectedItemId(),data.newdpt.depname);
closeWin();
}else{
alert("修改失败!");
}
}, "json");
}
}
function doEditPosition(id,name,remark){
if(name==''||name==null){
alert("请输入职位名称!");
}else{
var params = new Object();
params["id"] = id;
params["posname"] = name;
params["posdesc"] = remark;
jQuery.post("${request.getContextPath()}/position/updatePosition", params, function(data){
if(data.result == true){
alert("修改成功!");
postionTree3.setItemText(postionTree3.getSelectedItemId(),data.newpsn.posname);
closeWin();
}else{
alert("修改失败!");
}
}, "json");
}
}
//tab2
dhxToolbar2 = tabbar.cells("a2").attachToolbar();
dhxToolbar2.setIconsPath("${request.getContextPath()}/resources/toolbarXml/icons/");
dhxToolbar2.loadXML("${request.getContextPath() }/resources/toolbarXml/departmenttoolbar2.xml?rt=" + new Date().valueOf());
dhxToolbar2.attachEvent("onClick",function(id){
toAction(id);
});
attachtreea2 = tabbar.cells("a2").attachTree();
attachtreea2.setImagePath("${request.getContextPath()}/js/dhtmlxTree/imgs/");
attachtreea2.enableCheckBoxes(true);
attachtreea2.enableThreeStateCheckboxes(true);
//tab3
dhxLayoutfora3 = tabbar.cells("a3").attachLayout("2U");
dhxLayoutfora3.cells("a").setWidth(200);
dhxLayoutfora3.cells("a").setText("职位(选择公司刷新)");
dhxLayoutfora3.cells("a").fixSize(true,true);
postionTree3 = dhxLayoutfora3.cells("a").attachTree();
postionTree3.setImagePath("${request.getContextPath()}/js/dhtmlxTree/imgs/");
setProgress(postionTree3,"a");
postionTree3.attachEvent("onClick",function(id){
roleTree.deleteChildItems(0);
roleTree.loadXML("${request.getContextPath()}/position/showroles/"+id);
});
dhxLayoutfora3.cells("b").setText("职位角色管理");
dhxLayoutfora3.cells("b").fixSize(true,true);
toolbar3 = dhxLayoutfora3.cells("b").attachToolbar();
toolbar3.setIconsPath("${request.getContextPath()}/resources/toolbarXml/icons/");
toolbar3.loadXML("${request.getContextPath() }/resources/toolbarXml/departmenttoolbar3.xml?rt=" + new Date().valueOf());
toolbar3.attachEvent("onClick",function(id){
toAction(id);
});
roleTree = dhxLayoutfora3.cells("b").attachTree();
roleTree.setImagePath("${request.getContextPath()}/js/dhtmlxTree/imgs/");
roleTree.enableCheckBoxes(true);
roleTree.enableThreeStateCheckboxes(true);
//tab4
dhxLayout2 = tabbar.cells("a4").attachLayout("2U");
dhxLayout2.cells("a").setWidth(200);
dhxLayout2.cells("a").setText("职位信息(请选择部门)");
dhxLayout2.cells("a").fixSize(true,true);
postionTree = dhxLayout2.cells("a").attachTree();
postionTree.setImagePath("${request.getContextPath()}/js/dhtmlxTree/imgs/");
setProgress(postionTree,"a");
//tree.loadXML("${request.getContextPath()}/department/departmentTree/115101?" + new Date().valueOf());
//tree.loadXML("${request.getContextPath()}/department/departmentTree/5120?" + new Date().valueOf());
//tree.loadXML("${request.getContextPath()}/department/departmentTree?" + new Date().valueOf());
postionTree.attachEvent("onClick",function(id){
var selectedItem = postionTree.getSelectedItemId();
attachtreea3.deleteChildItems(0);
attachtreea3.loadXML("${request.getContextPath()}/department/showusers2/"+selectedItem+"?departmentId="+tree.getSelectedItemId());
});
dhxLayout2.cells("b").setText("职位人员");
dhxLayout2.cells("b").fixSize(true,true);
toolbar2 = dhxLayout2.cells("b").attachToolbar();
toolbar2.setIconsPath("${request.getContextPath()}/resources/toolbarXml/icons/");
toolbar2.loadXML("${request.getContextPath() }/resources/toolbarXml/departmenttoolbar4.xml?rt=" + new Date().valueOf());
toolbar2.attachEvent("onClick",function(id){
toAction(id);
});
attachtreea3 = dhxLayout2.cells("b").attachTree();
attachtreea3.setImagePath("${request.getContextPath()}/js/dhtmlxTree/imgs/");
attachtreea3.enableCheckBoxes(true);
attachtreea3.enableThreeStateCheckboxes(true);
</script>
页面中html代码 (a中引用的div):
<div id="objId" class="paginateButtons" >
<div style="margin: 3px 5px 3px 5px;">
<form action="tree" method="post">
<strong style="font-size: 12px;font-weight:normal;">输入公司名称:</strong>
<input type="text" name="company" id="company" value="${params?.company }" style="width: 140px;"/>
<input type="submit" class="searchb" value="搜索" />
</form>
</div>
</div>
|
分页
select f.* from
( select e.*,rownum rowno from (
........(你的sql)
) e where rownum <= end
) f where f.rowno >=star
star 与end分别为传入的要展示的页数。。为页面传回的参数。。
创建:
create table TYPE1
(
id NUMBER(19) not null,
parts_type_id NUMBER(19),
sn VARCHAR2(255 CHAR),
place VARCHAR2(255 CHAR),
product_types_id NUMBER(19),
parts_spe_id NUMBER(19),
type_sum NUMBER(19),
beake_type_sum NUMBER(19),
last_updated TIMESTAMP(6)
)
创建 关联表 插入
create table TYPE1_PARTS_TYPE (
TYPE1_id NUMBER(19),
PARTS_TYPE_id number(19)
)
alter table TYPE1_PARTS_TYPE
add constraint FKC80A323423423423w0EBBB foreign key (TYPE1_id)
references TYPE1 (ID);
alter table TYPE1_PARTS_TYPE
add constraint FKC80A32ew23423w0EBBB foreign key (PARTS_TYPE_id)
references PARTS_TYPE (ID);
报错:ORA-02270: 此列列表的唯一或主键不匹配
如果第一个报错,可以给TYPE1_PARTS_TYPE 改下主键可以执行下面语句
alter table TYPE1_PARTS_TYPE
add constraint MAIN_TABLE_PK primary key (ID);
execute、executeQuery和executeUpdate用法
UEventStateOrder.executeUpdate("delete from UEventStateOrder c where c.u = :u", [u:loginUser])
UEventStateOrder为一个表名:
方法executeQuery
用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。
方法executeUpdate
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。实际上,相对于创建表来说,executeUpdate 用于更新表的时间更多,因为表只需要创建一次,但经常被更新。
i
--添加一条记录
INSERT INTO tableName(col1,col2,col3) VALUES (1,2,3)
--添加多条记录
INSERT INTO tableName(col1,col2,col3)
SELECT 3,4,5
UNION ALL
SELECT 6,7,8
--从另外的一张表中读取多条数据添加到新表中
INSERT INTO tableName(col1,col2,col3)
SELECT a,b,c FROM tableA
--从其他的多张表中读取数据添加到新表中
INSERT INTO tableName(col1,col2,col3)
SELECT a,b,c FROM tableA WHERE a=1
UNION ALL
SELECT a,b,c FROM tableB WHERE a=2
上边代码中的into都可以省略!
|
OutputStream os = response.getOutputStream();
response.reset();
response.setHeader("Content-disposition", "attachment; filename=fine.xls");
response.setContentType("application/msexcel");
WritableWorkbook wbook = Workbook.createWorkbook(os);
/**
* 设置背景
*/
WritableFont grayfont = new WritableFont(WritableFont.TAHOMA, 13);
WritableCellFormat gray = new WritableCellFormat (grayfont);
gray.setBackground(Colour.GRAY_25);//hui
String excelName = "\u90E8\u95E8\u8D44\u4EA7\u7EDF\u8BA1";
//设置excel标题
WritableSheet wsheet = wbook.createSheet(excelName, 0);
wsheet.addCell(new Label(0, 0, "\u90E8\u95E8\u8D44\u4EA7\u7EDF\u8BA1"));
wsheet.mergeCells(0, 0, 4, 0);
/**
* 生成标头
* */
wsheet.addCell(new Label(0, 1, "\u90E8\u95E8\u540D\u79F0" ));
wsheet.addCell(new Label(1, 1, "\u8D44\u4EA7\u540D\u79F0" ));
wsheet.addCell(new Label(2, 1, "\u8D44\u4EA7\u5C5E\u6027" ));
wsheet.addCell(new Label(3, 1, "\u8D44\u4EA7\u7F16\u53F7" ));
wsheet.addCell(new Label(4, 1, "\u8D44\u4EA7\u4F7F\u7528\u4EBA" ));
//循环生成表格内容 表格内容为String类型不是的话加“”+内容+“”来转换
for(int i=0;i<cc.size();i++){
def aa=cc[i]
for(int k=0;k<aa.size();k++){
wsheet.addCell(new Label(0, t,""+aa[k].useDepartment+"" ));
wsheet.addCell(new Label(1, t,""+aa[k].name+"" ));
wsheet.addCell(new Label(2, t,""+aa[k].assetType+"" ));
wsheet.addCell(new Label(3, t,""+aa[k].assetno+"" ));
wsheet.addCell(new Label(4, t,""+aa[k].assetUser+"" ));
}
}
wbook.write();
wbook.close();
os.close();
//wsheet.mergeCells(0,0,0,0);合并行列
|