📄 confirmservelt.java
字号:
package org.tsinghua.netshop;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import org.tsinghua.netshop.beans.*;
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;
public class ConfirmServelt extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";
//Initialize global variables
public void init() throws ServletException {
}
//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
String username = (String) request.getSession().getAttribute("username");
String uname = request.getParameter("uname");
String phone = request.getParameter("phone");
String email = request.getParameter("email");
String postalcode = request.getParameter("postalcode");
String address = request.getParameter("address");
String remark = request.getParameter("remark");
String uid = request.getParameter("uid");
String total = request.getParameter("total");
request.getSession().setAttribute("remark",remark);
People p = new People();
p.loadByUsername(username);
p.setUname(uname);
p.setPhone(phone);
p.setEmail(email);
p.setPostalcode(Integer.parseInt(postalcode));
p.setAddress(address);
p.update();
request.getSession().setAttribute("people",p);
Orderform of = new Orderform();
of.setUid(Integer.parseInt(uid));
of.setTotal(Float.parseFloat(total));
of.setRemark(remark);
of.insert();
Hashtable ha = (Hashtable) request.getSession().getAttribute("buylist");
of.findFidAndDatetime();
request.getSession().setAttribute("fid",of.getFid());
Enumeration e = ha.elements();
String cname = "";
float count = 0;
while (e.hasMoreElements()) {
Goods g = (Goods) e.nextElement();
Ordersub os = new Ordersub();
os.setFid(of.getFid());
os.setPid(g.getPid());
os.setPname(g.getPname());
os.setPrice(g.getPrice());
os.setNumber(g.getbuyNumber());
os.insert();
cname = cname + " " + g.getPname();
count = count + g.getbuyNumber() * g.getPrice();
}
// 以下为邮件发送
String body = "尊敬的用户您好:\n";
body = body + "\t\t\t\t您于" +of.getDatetime().toLocaleString() + "在美讯产品发布网站中预订了" + cname +
",共" + count + "元。为了您能够顺利购物,请在完成汇款后回复此邮件。\n";
body = body + "\t\t\t\t谢谢\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t美讯产品发布网站";
try{
Properties props = new Properties(); //也可用Properties props = System.getProperties();
props.put("mail.smtp.host", "smtp.sina.com.cn"); //存储发送邮件服务器的信息
props.put("mail.smtp.auth", "true"); //同时通过验证
//方法二:(如果是在weblogin配置JavaMail:则需指定JNDI名检索
//Context ctx=new InitialContext();
//Session s=(Session)ctx.lookup("MailSession");
//Message msg=new MimeMessage(s);
//这个Session类代表JavaMail 中的一个邮件session. 每一个基于 JavaMail的应用程序至少有一个session但是可以有任意多的session。
//Session类定义全局和每个用户的与邮件相关的属性。这此属性说明了客房机和服务器如何交流信息。
Session s = Session.getInstance(props, null); //根据属性新建一个邮件会话,null参数是一种Authenticator(验证程序) 对象
s.setDebug(true); //设置调试标志,要查看经过邮件服务器邮件命令,可以用该方法
// 一旦创建了自己的Session对象,就是该去创建要发送的消息的 时候了。这时就要用到消息类型(MimeMessage是其中一种类型)。
// Message对象将存储我们实际发送的电子邮件信息,Message对象被作为一个MimeMessage对象来创建并且需要知道应当选择哪一个JavaMail session。
// Message类表示单个邮件消息,它的属性包括类型,地址信息和所定义的目录结构。
Message message = new MimeMessage(s); //由邮件会话新建一个消息对象
//message.setContent("hello","test/plain");//设置消息的内容类型,如果发送的格式有HTML格式就必须设置,
//message.setText("Hello");//发送一般文本格式的消息
//设置邮件,一旦您创建了 Session 和 Message,并将内容填入消息后,就可以用Address确定信件地址了。
//如果想让一个名字出现在电子邮件地址后,也可以将其传递给构造器:
//Address from=new InternetAddress("http://blog.csdn.net/xmqds/archive/2004/07/02/'mailto:xmqds@21cn.com发件人的邮件地址
Address from = new InternetAddress("billy12151@sina.com"); //发件人的邮件地址
message.setFrom(from); //设置发件人
Address to = new InternetAddress(p.getAddress()); //收件人的邮件地址
message.setRecipient(Message.RecipientType.TO, to); //设置收件人,并设置其接收类型为TO,还有3种预定义类型如下:
//Message.RecipientType.TO
//Message.RecipientType.CC
//Message.RecipientType.BCC
message.setSubject("欢迎您访问美讯产品发布网站"); //设置主题
message.setText(body); //设置信件内容
message.setSentDate(new Date()); //设置发信时间
message.saveChanges(); //存储邮件信息
// Transport 是用来发送信息的,
// 用于邮件的收发打操作。
Transport transport = s.getTransport("smtp");
transport.connect("smtp.sina.com.cn", "登录名", "密码"); //以smtp方式登录邮箱
transport.sendMessage(message, message.getAllRecipients()); //发送邮件,其中第二个参数是所有已设好的收件人地址
transport.close();
}
catch (MessagingException e1) {
out.println(e1.toString());
}
response.sendRedirect("lastconfirm.jsp");
}
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}
//Clean up resources
public void destroy() {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -