毕设小结

1.servlet相关知识(servlet主要用于处理显式的表单请求URL请求或者隐身的cookie或者session。)

Servlet 是服务 HTTP 请求 并实现 javax.servlet.Servlet 接口的 Java 类。Web 应用程序开发人员通常编写 Servlet 类来继承 javax.servlet.http.HttpServlet,并实现相应 Servlet 接口。具体的参见http://docs.oracle.com/javaee/6/tutorial/doc/bnafv.html;

servlet中的doGet()和doPost()的方法分别用于处理方式为get和post的请求,其函数接口如下:

void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}

void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}

其中request和response是javax.servlet 和 javax.servlet.http中封装的两个类,有多种方法。

request可能包含整个表单数据或者URL请求,在doGet或者doPost中可以通过request.getParamter(String name)获得相应名称的参数值,在去处理一些相应的数据库操作。
Enumeration request.getAttributeNames();//获得所有属性值,返回枚举类型
2常见的注意事项

2.1页面跳转和消息提示生成

request.setAttribute(String name,String content );//设置名称为name的属性值为content
dispatcher.foward(request,response);//也可以执行跳转操作,完成相应的操作,并最终完成相应的结果

两者的区别在于request.setAttribute()这个只是在一个周期内完成(一个周期大概指的是一个请求,指的是通过浏览器请求并完成到下一个新页面跳转之前这段过程),前者是相当于重新生成了request和response,有点类似于变量覆盖或者重新赋值。后者就只是重新完成对原页面重新请求。
2.2 网络中中文字符传递乱码问题
这个问题必须要了解的是java中的网络传输使用的是ISO-8859-1的字符集,所以直接传递中文参数返回的是ISO-8859-1编码的信息,所以乱码的根本原因在于编码问题。
这个网络传递主要分两种,一种是url直接传递中文参数,另一种是是表单传递一定的中文参数。
解决办法:
在使用前使用java.net中分装好了的URLEncoder和URLDecoder两个类,其提供了解码和转码的静态方法。例如:

<a href=’./MyJsp2.jsp?act=<%=URLEncoder.encode("北京人 非常好 =-")%>’>testa>

在处理中可以使用如下的方式:

String tempVal = URLDecoder.decode(request.getParameter("act"));
out.println(new String(tempVal.getBytes("ISO-8859-1"), "gb2312"));

就可以将iso-8859-1编码的中文转换成gb2312的编码,便不会出现乱码。

3.创建邮件的过程

    Properties prop = new Properties();//读取Java的配置文件
    prop.setProperty("mail.host", "smtp.163.com");//设置SMTP服务器的主机信息
    prop.setProperty("mail.transport.protocol", "smtp");
    prop.setProperty("mail.smtp.auth", "true");
    //使用JavaMail发送邮件的5个步骤
    //1、创建session
    Session session = Session.getInstance(prop);
    //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
    session.setDebug(true);
    //2、通过session得到transport对象
    Transport ts = null;
    try {
        ts = session.getTransport();
        //3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名username和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
        ts.connect("smtp.163.com", username, password);
        //4、创建邮件
        Message message = null;
        message = createAttachMail(session,path,ms.getPostName(),email);
        //5、发送邮件
        ts.sendMessage(message, message.getAllRecipients());
        ts.close();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

private MimeMessage createAttachMail(Session session,String path,String subject,String email) throws  Exception//创建一个附件邮件,其中MimeMessage是基于MIME协议封装的一个类,用于创建邮件
{
    MimeMessage message=new MimeMessage(session);
    message.setFrom(new InternetAddress("[email protected]"));//设置发件人
    message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));/设置收件人
    message.setSubject("应聘:"+subject);
    MimeBodyPart text = new MimeBodyPart();
    text.setContent("来自于智能招聘平台", "text/html;charset=UTF-8");
    MimeBodyPart attach=new MimeBodyPart();
    DataHandler dh=new DataHandler(new FileDataSource(path));
    attach.setDataHandler(dh);
    attach.setFileName(dh.getName());
    MimeMultipart mp=new MimeMultipart();
    mp.addBodyPart(attach);
    mp.addBodyPart(text);
    mp.setSubType("mixed");//附件邮件设置为mixed模式
    message.setContent(mp);
    message.saveChanges();//更新报文头部相应的内容
    return message;
}

你可能感兴趣的:(学习笔记)