如果不需要做判断 可以不用手动拼接json串
可以用ctrl+shift+t 可以搜寻类名 就能找到具体的类名
回顾
1、用户--角色
Span标签的样式:display:inline-block;width:200px
2、角色--模块
zTree树展示权限列表
使用步骤:
1、导入js/css
2、jsp中引入js/css
3、组织json数据,手动拼接json串[{"id":"","pId":"","name":"","checked":"true|false"}]
4、将这个json串向浏览器输出:response对象手动输出
5、客户端可以发出ajax请求,来得到这个json串
$.ajax({url:"",dataType:"text",type:"GET",success:function(){}})
对多对操作的时候,如果要操作中间表的关系,不需要加cascade
3、struts2异常处理框架
struts.xml文件中配置
<!--全局结果视图-->
<global-results>
<result name="error">/WEB-INF/pages/error.jsp</result>
</global-results>
<!--全局异常处理-->
<global-exception-mappings>
<exception-mapping exception="my.exception.SysException" result="error"></exception-mapping>
<exception-mapping exception="java.lang.Exception" result="error"></exception-mapping>
</global-exception-mappings>
Action类中
throw new SysException("");
一、什么是JavaMail
JavaMail是提供给开发人员在应用程序中实现邮件发送和接受功能而提供的一套标准开发类库,支持常用的邮件协议,如SMTP、POP3、IMAP,
开发人员使用JavaMail编写邮件程序时,无需考虑底层的通信细节(Socket),JavaMail也提供了能够创建出各种复杂MIME格式的邮件内容的API,
使用JavaMail,可以使用类似OutLook、FoxMail的软件
二、JavaMail的基本概述
1、邮件开发的相关协议
SMTP:Simple Message Transfer Protocal 发送协议 默认端口:25
POP:Post Office Protocal 邮局协议,POP3版本用的多,接受协议 默认端口:110
三、邮件开发的准备工作
1、申请邮箱并开通POP3/SMTP服务
2、引入JavaMail
在xxx_parent的pom.xml中添加
<!-- Javamail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency>
Spring和JavaMail集成还需要在xxx_parent的pom.xml引入
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
如果是web项目,引入
spring-context-support-4.2.4.RELEASE.jar
mail-1.4.4.jar
四、传统的邮件
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.163.com");//指定邮件的发送服务器地址
props.put("mail.smtp.auth", "true");//服务器是否要验证用户的身份信息
Session session = Session.getInstance(props);//得到Session
session.setDebug(true);//代表启用debug模式,可以在控制台输出smtp协议应答的过程
//创建一个MimeMessage格式的邮件
MimeMessage message = new MimeMessage(session);
//设置发送者
Address fromAddress = new InternetAddress("xxx@163.com");//邮件地址
message.setFrom(fromAddress);//设置发送的邮件地址
//设置接受者
Address toAddress = new InternetAddress("xxx@qq.com");//邮件地址
message.setRecipient(RecipientType.TO, toAddress);//设置接受者的地址
//设置邮件的主题
message.setSubject("我来了");
//设置邮件的内容
message.setText("啦啦啦");
//保存邮件
message.saveChanges();
//得到发送邮件的火箭[transport]
Transport transport = session.getTransport("smtp");
//火箭连接到服务器上
transport.connect("smtp.163.com", "xxx", "xxx");
//火箭点火,发送
transport.sendMessage(message, message.getAllRecipients());
//关闭通道
transport.close();
五、邮件发送的工具类的提取
public class MailUtil {
public static void sendMessage(String toAddr,String subject,String content) throws Exception {
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.163.com");//指定邮件的发送服务器地址
props.put("mail.smtp.auth", "true");//服务器是否要验证用户的身份信息
Session session = Session.getInstance(props);//得到Session
session.setDebug(true);//代表启用debug模式,可以在控制台输出smtp协议应答的过程
//创建一个MimeMessage格式的邮件
MimeMessage message = new MimeMessage(session);
//设置发送者
Address fromAddress = new InternetAddress("xxx@163.com");//邮件地址
message.setFrom(fromAddress);//设置发送的邮件地址
//设置接受者
Address toAddress = new InternetAddress(toAddr);//邮件地址
message.setRecipient(RecipientType.TO, toAddress);//设置接受者的地址
//设置邮件的主题
message.setSubject(subject);
//设置邮件的内容
message.setText(content);
//保存邮件
message.saveChanges();
//得到发送邮件的火箭[transport]
Transport transport = session.getTransport("smtp");
//火箭连接到服务器上
transport.connect("smtp.163.com", "xxx", "xxx");
//火箭点火,发送
transport.sendMessage(message, message.getAllRecipients());
//关闭通道
transport.close();
}
}
六、使用JavaMail实现员工登录信息的发送
在员工信息添加时,同时向员工发送一封通知的邮件
数据库字段的修改:USER_INFO_P表
添加EMAIL字段 varchar2(30)
1、修改PO类与映射文件
domain.userinfo
private String email;//邮箱地址
映射文件Userinfo.hbm.xml
<property name="email" column="EMAIL"></property>
2、修改jUserCreate.jsp页面
<td class="columnTitle">邮箱:</td>
<td class="tableContent"><input type="text" name="userinfo.email" value=""/></td>
3、业务逻辑层UserServiceImpl
//再开启一个新的线程完成邮件发送功能
Thread th = new Thread(new Runnable() {
public void run() {
try {
MailUtil.sendMessage(entity.getUserinfo().getEmail()
, "新人"
, "欢迎加入 用户名为"+entity.getUserName()+"初始密码"+SysConstant.DEFAULT_PASS);
} catch (Exception e) {
e.printStackTrace();
}
}
});
th.start();//启动发送邮件的线程
七、JavaMail与Spring集成开发
CC 英文全称是 Carbon Copy(抄送)
BCC英文全称是 Blind Carbon Copy(暗抄送)。
两者的区别在于在BCC栏中的收件人可以看到所有的收件人名(TO,CC,BCC),而在TO和CC栏中的收件人看不到BBC的收件人名
Spring邮件抽象层的主要包为org.springframework.mail.包括了发送电子邮件的主要接口MailSender,和其实现类SimpleMailMessage,封装了简单邮件的属性如from,to,cc,subject,text。包里还有一颗以MailException为根的checkedException继承树,提供了对底层邮件系统异常的高级别抽象。要获得关于邮件异常层次的更丰富的信息。
为了使用JavaMail中的一些特色,比如MIME类型的邮件,spring提供了MailSender的一个子接口,即org.springframework.mail.javamail.JavaMailSender。
Spring还提供了一个回调接口
org.springframework.mail.javamail.MimeMessagePreparator用于准备JavaMail的MIME信件
1、在src目录下建立mail.properties文件里面包含
mail.smtp.host=smtp.163.com
mail.smtp.auth=true
mail.username=xxx
mail.password=xxx
mail.from=xxx@163.com
2、使用spring配置
<description>JavaMail配置文件</description>
<!-- 加载mail.properties -->
<context:property-placeholder location="classpath:mail.properties"/>
<!-- 配置一个简单邮件对象 -->
<bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="from" value="${mail.from}"></property>
</bean>
<!-- 邮件的发送对象 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.smtp.host}"></property>
<property name="username" value="${mail.username}"></property>
<property name="password" value="${mail.password}"></property>
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 邮件发送相关的配置信息 -->
<property name="javaMailProperties" >
<props>
<!-- 设置认证开关 -->
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<!-- 启动调试开关 -->
<prop key="mail.debug">true</prop>
<!-- 设置发送延迟 -->
<prop key="mail.smtp.timeout">0</prop>
</props>
</property>
</bean>
1、发送邮件
@Test
public void Test() throws Exception{
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext-mail.xml");
SimpleMailMessage message = (SimpleMailMessage) ac.getBean("mailMessage");//加载简单邮件对象
JavaMailSender sender = (JavaMailSender) ac.getBean("mailSender");//得到邮件的发送对象,专门用于邮件发送
//设置简单邮件对象的属性
message.setSubject("spring测试");//主体
message.setText("hello");//内容
message.setTo("xxx@qq.com");//收件箱
//发送邮件
sender.send(message);
}
2、发送带有图片的邮件,以嵌入HTML的方式 和发附件
@Test
public void Test() throws Exception{
ApplicationContext ac = new ClassPathXmlApplicationContext("classpath:applicationContext-mail.xml");
JavaMailSender sender = (JavaMailSender) ac.getBean("mailSender");
//发送一个允许带图片,同时带邮件的邮件
MimeMessage message = sender.createMimeMessage();//创建一封允许带图片,同时带邮件的邮件
//为了更好的操作MimeMessage对象,借用一个工具类来操作
MimeMessageHelper helper = new MimeMessageHelper(message,true);
//通过工具类设置主题,内容,图片,附件
helper.setFrom("xxx@163.com");
helper.setTo("xxx@qq.com");
helper.setSubject("来自xxx");
helper.setText("<html><head></head><body><h1>hello!!spring image html mail</h1>" +
"<a href=http://www.baidu.com>baidu</a>" + "<img src=cid:image/></body></html>", true);//第二个参数说明内容要解析为html代码
//添加图片 可以用路径 也可以用new File 弄个对象进去 554HL:IHU 是重复多次发邮件 IP被暂时挂起 可以换IP或者网
FileSystemResource resource = new FileSystemResource(new File("C:\\Users\\Administrator\\Desktop\\imgs\\5.11\\TIM截图2.png"));
helper.addInline("image",resource);//和cid一致
//发送时带附件
FileSystemResource zipResource = new FileSystemResource(new File("C:\\Users\\Administrator\\Desktop\\imgs\\5.11\\TIM截图2.png"));
helper.addAttachment("zip文件", zipResource);
//发送邮件
sender.send(message);
}
在UserServiceImpl中注入相关的对象
//注入邮件发送相关的对象
private SimpleMailMessage mailMessage;
private JavaMailSender mailSender;
public void setMailMessage(SimpleMailMessage mailMessage) {
this.mailMessage = mailMessage;
}
public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
修改相关的配置
<bean id="userService" class="my.service.UserServiceImpl">
<property name="baseDao" ref="baseDao"></property>
<property name="mailMessage" ref="mailMessage"></property>
<property name="mailSender" ref="mailSender"></property>
</bean>
添加spring和javamail集成的配置文件
applicationContext-mail.xml
<!-- 加载mail.properties -->
<context:property-placeholder location="classpath:mail.properties"/>
<!-- 配置一个简单邮件对象 -->
<bean id="mailMessage" class="org.springframework.mail.SimpleMailMessage">
<property name="from" value="${mail.from}"></property>
</bean>
<!-- 邮件的发送对象 -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.smtp.host}"></property>
<property name="username" value="${mail.username}"></property>
<property name="password" value="${mail.password}"></property>
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 邮件发送相关的配置信息 -->
<property name="javaMailProperties" >
<props>
<!-- 设置认证开关 -->
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<!-- 启动调试开关 -->
<prop key="mail.debug">true</prop>
<!-- 设置发送延迟 -->
<prop key="mail.smtp.timeout">0</prop>
</props>
</property>
</bean>
将邮件相关信息抽取到mail.properties文件中
mail.smtp.host
mail.smtp.auth
mail.username
mail.password
mail.from
使用线程实现邮件发送
// spring集成javaMail
Thread th = new Thread(new Runnable() {
public void run() {
try {
mailMessage.setTo(entity.getUserinfo().getEmail());
mailMessage.setSubject("欢迎");
mailMessage.setText("欢迎加入 用户名为" + entity.getUserName() + "初始密码" + SysConstant.DEFAULT_PASS);
mailSender.send(mailMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
});
th.start();// 启动发送邮件的线程