JSP 教程 在线

2109JSP 发送邮件

//163邮箱发送带有附件的邮件到qq邮箱

<%@ page import="java.util.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%
        String result;
        // 收件人的电子邮件
        String to = "abc@qq.com";

        // 发件人的电子邮件名和密碼
        String from = "abcd@163.com";
        String psd = "87800288b";
        //设置用户名
        String user = "abcd";

        Properties properties = new Properties();

        try {
            // 设置用户的认证方式
            properties.setProperty( "mail.smtp.auth", "true" );
            //设置传输协议
            properties.setProperty( "mail.transport.protocol", "smtp" );
            //SMTP邮件服务器
            properties.setProperty( "mail.smtp.host", "smtp.163.com" );
            //SMTP邮件服务器默认端口
            properties.setProperty( "mail.smtp.port", "25" );

            // 获取默认的Session对象。
            Session mailSession = Session.getDefaultInstance( properties );

            // 创建一个默认的MimeMessage对象。
            Message message = new MimeMessage( mailSession );
            // 根据session对象获取邮件传输对象Transport
            Transport transport = mailSession.getTransport();

            // 设置 From: 头部的header字段
            message.setFrom( new InternetAddress( from ) );
            // 设置 To: 头部的header字段
            message.addRecipient( Message.RecipientType.TO, new InternetAddress( to ) );
            // 设置 Subject: header字段
            message.setSubject( "This is the Subject Line!" );
            // 现在设置的实际消息

            BodyPart messageBodyPart = new MimeBodyPart();

            messageBodyPart.setText("This is message body");

            Multipart multipart = new MimeMultipart();

            multipart.addBodyPart(messageBodyPart);

            messageBodyPart = new MimeBodyPart();
            //使用绝对路径
            String filename = "C:\\apache-tomcat-7.0.90\\webapps\\ROOT\\file.txt";
            //添加文件到message
            DataSource source = new FileDataSource(filename);

            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(filename);

            multipart.addBodyPart(messageBodyPart);
            message.setContent(multipart);
            message.setSentDate(new Date());

            // 设置发件人的账户名和密码
            transport.connect(user,psd);
            // 发送邮件,并发送到所有收件人地址,message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
            transport.sendMessage( message, message.getAllRecipients() );

            result = "Sent message successfully....";
        } catch (Exception e) {
            e.printStackTrace();
            result = "Error: unable to send message....";
        }

%>
<html>
<head>
<title>Send Email using JSP</title>
</head>
<body>
<center>
<h1>Send Email using JSP</h1>
</center>
<p align="center">
<% 
   out.println("Result: " + result + "\n");
%>
</p>
</body>
</html>

2108JSP 自动刷新

实现注册后,三秒跳转到登录页,有倒数3,2,1效果:

<script>
onload=function(){
    setInterval(go, 1000);
};
var x=3; //利用了全局变量来执行
function go(){
    x--;
    if(x>0){
        document.getElementById("time").innerHTML=x;  //每次设置的x的值都不一样了。
    }else{
        location.href='';  // 设置你的注册页面
    } 
}  
</script>
<span id="time">3</span>

>尝试一下 »

2107JSP 文件上传

添加上面两个jar的时候,注意添加到 WEB-INFlib 目录里面,并添加到 build path,否则会报错:

java.lang.ClassNotFoundException: org.apache.commons.fileupload.servlet.ServletFileUpload

2106JSP 过滤器

一、Filter 的基本工作原理

  • 1、Filter 程序是一个实现了特殊接口的 Java 类,与 Servlet 类似,也是由 Servlet 容器进行调用和执行的。
  • 2、当在 web.xml 注册了一个 Filter 来对某个 Servlet 程序进行拦截处理时,它可以决定是否将请求继续传递给 Servlet 程序,以及对请求和响应消息是否进行修改。
  • 3、当 Servlet 容器开始调用某个 Servlet 程序时,如果发现已经注册了一个 Filter 程序来对该 Servlet 进行拦截,那么容器不再直接调用 Servlet 的 service 方法,而是调用 Filter 的 doFilter 方法,再由 doFilter 方法决定是否去激活 service 方法。
  • 4、但在 Filter.doFilter 方法中不能直接调用 Servlet 的 service 方法,而是调用 FilterChain.doFilter 方法来激活目标 Servlet 的 service 方法,FilterChain 对象时通过 Filter.doFilter 方法的参数传递进来的。
  • 5、只要在 Filter.doFilter 方法中调用 FilterChain.doFilter 方法的语句前后增加某些程序代码,这样就可以在 Servlet 进行响应前后实现某些特殊功能。
  • 6、如果在 Filter.doFilter 方法中没有调用 FilterChain.doFilter 方法,则目标 Servlet 的 service 方法不会被执行,这样通过 Filter 就可以阻止某些非法的访问请求。

更多内容可以参考:Filter、FilterChain、FilterConfig 介绍

2105eclipse-jsp

Servlet3.0新特性(得Tomcat7.0版本及以上),@WebServlet 用于将一个类声明为 Servlet,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为 Servlet。