为以后用到的时候有个参照,仅此而已。
框架:struts1+Spring
情形(1)从后台取出数据放入select中并默认选中之前选的
<select name="fullname" style="width: 140px;"class="selectWidth" id="fullname" onChange="changeName()"> <option value="0"></option> <logic:iterate id="list" name="names"> <option value="<bean:write name="list" property="employeeid"/>" <c:if test="${app.employeeid==list.employeeid }">selected </c:if> > <bean:write name="list" property="employeeName" /> </option> </logic:iterate> </select>
说明一点,后台是request.setAttribute("names",names),所以这里name=“names”即是要遍历的后台request里的List,便利出来的对象定义为list (id="list")
<bean:write name="list" property="employeeid" />即取出对象的employeeid属性
这里需要注意,struts1也是支持ognl的,网上有好多人说不可以,但这却真真实实的“${app.fullname==list.employeeid}”可以,您也可以在百度里看jstl中也有跟el的混合使用。
情形(2) 点击某个链接 显示或隐藏
<div onClick='showhidediv("msg")' id="unfold" >+show or hidden</div>
<tbody id="msg" style="display:none;" mce_style="display:none;">
。。。。。。<!--这里是需要显示或者隐藏的-->
</tbody>
js代码:
function showhidediv(id){
var sbtitle=document.getElementById(xx);
var unfold=document.getElementById("xx");
if(sbtitle){
if(sbtitle.style.display=='block'){
sbtitle.style.display='none';
unfold.innerHTML="+show";
}else{
sbtitle.style.display='block';
unfold.innerHTML="-hidden";
}
}
}
情形3 ajax实现选择某人后出现此人信息
function changeName(){
var em_id = document.getElementById("xx").value;
var urlStr = "<%=WEBPATH%>/changeName.fb?em_id="+em_id;
var xmlhttp;
if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else{ // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
var mid = xmlhttp.responseText;
var buf = mid.split("$$");
var str=buf[1].split(";;");
var out = document.getElementById("xx");
out.options.length=0;
var ojobRole = document.getElementById("xx");
var owork = document.getElementById("owork");
for(var i=0;i<str.length-1;i++){
var proj=str[i].split(",");
out.options.add(new Option(proj[2],proj[0]));
ojobRole.value=proj[1];
owork.value=proj[3];
}
}
}
xmlhttp.open("get",urlStr,true);
xmlhttp.send(em_id);
}
是$$数据1;数据2;....$$
所以这里进行了分割传回的数据
情形4 用Spring发送邮件
先配置邮件的邮箱
mail.smtp.auth=true mail.smtp.timeout=25000 mail.smtp.starttls.enable=true mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory mail.smtp.socketFactory.fallback=false email.smtpHost=smtp.gmail.com email.port=465 email.from=xx@gmail.com email.username=xx@gmail.com email.password=xx
下面定义发送邮件的类
public class NewEmailSender implements Runnable { //get info from resource file static String host=ResourceBundle.getBundle("email").getString("email.smtpHost"); static String port=ResourceBundle.getBundle("email").getString("email.port"); static String mailFrom=ResourceBundle.getBundle("email").getString("email.from"); final static String username =ResourceBundle.getBundle("email").getString("email.username"); final static String password = ResourceBundle.getBundle("email").getString("email.password"); private List<String> mailTo; private List<String> cc; private String subject; private String msgContent; public NewEmailSender(){ } public NewEmailSender(List<String> mailTo,List<String> cc,String subject,String msgContent){ this.mailTo=mailTo; this.cc=cc; this.subject=subject; this.msgContent=msgContent; } public static Session getMailSession() { String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; Properties props = System.getProperties(); props.setProperty("mail.smtp.host", host); props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); props.setProperty("mail.smtp.socketFactory.fallback", "false"); props.setProperty("mail.smtp.port", port); props.setProperty("mail.smtp.socketFactory.port", port); props.put("mail.smtp.auth", "true"); Session sendMailSession= Session.getInstance(props, new Authenticator(){ protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); return sendMailSession; } public void sentEmail(List<String> mailTo,List<String> cc,String subject,String msgContent) { try{ Session sendMailSession=getMailSession(); Message msg = new MimeMessage(sendMailSession); msg.setFrom(new InternetAddress(username)); // set the mailTo recipients InternetAddress[] address = new InternetAddress[mailTo.size()]; for (int i = 0; i<mailTo.size(); ++i) { address[i] = new InternetAddress(mailTo.get(i)); } msg.setRecipients(Message.RecipientType.TO, address); // set the cc recipients if (cc != null) { System.out.println("bcc:"+cc.size()); address = new InternetAddress[cc.size()]; for (int i = 0; i<cc.size(); ++i) { address[i] = new InternetAddress(cc.get(i)); } msg.setRecipients(Message.RecipientType.CC, address); } /****/ msg.setSubject(subject); //msg.setText(msgContent); msg.setContent(msgContent, "text/html"); msg.setSentDate(new Date()); Transport.send(msg); System.out.println("Message sent."); } catch(MessagingException m) { System.out.println(m.toString()); } } @Override public void run() { sentEmail(mailTo, cc,subject, msgContent); } }
下面用到发送邮件的地方,比如一些事件完成 调用这个类
List<String> mailTo=new ArrayList();//要发送的目的邮箱 List<String> cc=new ArrayList();//抄送的邮箱 .....这里把邮箱的List放入mailTo和cc 比如mailTo.add(xx@gmail.com); String subject="xxxxx";//邮件的主题 StringBuffer sb=new StringBuffer(); //邮件的内容 sb.append("xxxxx"); NewEmailSender sender=new NewEmailSender(mailTo, cc, subject, sb.toString()); //参数分别为目标邮箱,抄送邮箱,主题,内容 Thread t = new Thread(sender); //定义线程 发送 t.start();
这样就可以发送了,默认是从配置文件里的邮箱给这个邮箱发