javaweb 博客系统总结

博客系统使用jsp+servlet+mybatis写成

1.关于表单验证

自己对于js的使用特别不熟悉.所以现学了一点注册时候的简单验证

onchange事件:实时监听文本框的输入,当用户离开文本框的时候就进行验证 onchange="函数调用"

js代码:

 <script type="text/javascript">
        function checkpwd() {
            var check = false;
            var password = document.getElementById("password").value;
            if (password.length < 6) {
               alert("密码不能少于六位")
                check = false;
            } else {
                check = true;
            }
            return check;
        }
        function checkName() {
            var check=false;
            var name=document.getElementById("name").value;
            if(name.length<3){
                alert("用户名大于3位");
                check=false;
            }else{
                check=true;
            }
            return check;
        }

        function checkpwdc() {
            var check = false;
            var password = document.getElementById("password").value;
            var pwdc = document.getElementById("re-password").value;
            if (password != pwdc) {
                alert("两次密码不一致");
                check = false;
            } else {
                check = true;
            }
            return check;
        }
        function checkAge() {
            var check=false;
            var age = document.getElementById("age").value;
            if(!isNaN(age)&&(age>0&&age<=120)){
                check=true;
            }
            else{
                alert("年龄不合法")
                check=false;
            }
            return check;
        }

        function checkNull() {
            var check=false;
            var username=document.getElementById("name").value;
            var pass=document.getElementById("password").value;
            var pass2=document.getElementById("re-password").value;
            var age=document.getElementById("age").value;
            var email=document.getElementById("email").value;
            if(username.length==0||pass.length==0||pass2.length==0||age.length==0||email.length==0){
                alert("请将全部信息填写");
                check=false;
            }else{
                check=true;
            }
           return check;
        }
        function check() {
            var check =checkName()&&checkAge()&&checkpwd() && checkpwdc()
            return check;

        }

    </script>

当不符合要求时用户无法提交表单onsubmit="return check()"

            <form action="ServletRegister" class="fh5co-form animate-box" data-animate-effect="fadeIn" method="post" onsubmit="return check()">

2.发送qq邮件功能

用户点击注册之后会将用户的qq邮箱和生成的编码传入

    首先需要一个qq邮箱开启SMTP和POP3协议,需要qq邮箱授权码

package servlet;
import com.sun.mail.util.MailSSLSocketFactory;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class QQMail {
    public  void hwj(String email,String code){
        // 1.创建连接对象javax.mail.Session
        // 2.创建邮件对象 javax.mail.Message
        // 3.发送一封激活邮件
        String from = "[email protected]";// 发件人电子邮箱
        String host = "smtp.qq.com"; // 指定发送邮件的主机smtp.qq.com(QQ)|smtp.163.com(网易)

        Properties properties = System.getProperties();// 获取系统属性

        properties.setProperty("mail.smtp.host", host);// 设置邮件服务器
        properties.setProperty("mail.smtp.auth", "true");// 打开认证

        try {
            // 2.4设置邮件内容
            //QQ邮箱需要下面这段代码,163邮箱不需要
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            properties.put("mail.smtp.ssl.enable", "true");
            properties.put("mail.smtp.ssl.socketFactory", sf);


            // 1.获取默认session对象
            Session session = Session.getDefaultInstance(properties, new Authenticator() {
                public PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication("[email protected]", "ngzlhsocilcxdgjc"); // 发件人邮箱账号、授权码
                }
            });

            // 2.创建邮件对象
            Message message = new MimeMessage(session);
            // 2.1设置发件人
            message.setFrom(new InternetAddress(from));
            // 2.2设置接收人
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
            // 2.3设置邮件主题
            message.setSubject("账号激活");
            // 2.4设置邮件内容
            String content = "<p>您好 O(∩_∩)O~~<br><br>欢迎加入博客系统!<br><br>帐户需要激活才能使用,赶紧激活成为正式的一员吧:)<br><br>请在24小时内点击下面的链接立即激活帐户:"
                    +"<br><a href='http://localhost:8080/ServletQQ?token="+code+"&email="+email+"'>" +
                    "http://localhost:8080/ServletQQ?token="+code+"&email="+email+"</a></p>";
            message.setContent(content, "text/html;charset=UTF-8");
            // 3.发送邮件
            Transport.send(message);
            System.out.println("邮件成功发送!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

当用户接受到邮件之后点击的连接实际是一个servlet,该servlet会将用户存到数据库里面(从session中取出),因为我是将用户的信息存到了session里面,所以必须要在同一个浏览器下面进行验证,不然就得不到那个user对象了,会报空指针异常错误!!!我一开始在另一个浏览器下验证一直在报错所以一定要注意!!!

3.博客编辑器

使用的百度开源软件ueditor插件

表单中代码

<!-- 加载编辑器的容器 -->
  <script id="editor" type="text/plain" name="content">
            
  </script>
<script type="text/javascript">
                       //实例化编辑器
                       //建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例
                       var ue = UE.getEditor('editor');
                        </script>

servlet中获取编辑器的内容 插件自带的editorValue名称:

String content=request.getParameter("editorValue");

该编辑器存入数据库后发现直接将html标签存入了数据库,这样在读取数据的时候不用自己处理


4.cookie记住用户名密码

<label for="remember"><input type="checkbox" value="y" id="remember" name="remember"> Remember Me</label>

在servletLogin中进行处理

 String flag=request.getParameter("remember");
 if(flag!=null&&flag.equals("y")){
                Cookie nameCookie = new Cookie("username", username);
                //设置Cookie的有效期为3天
                nameCookie.setMaxAge(60 * 60 * 24 * 3);
                Cookie pwdCookie = new Cookie("password", password);
                pwdCookie.setMaxAge(60 * 60 * 24 * 3);
                response.addCookie(nameCookie);
                response.addCookie(pwdCookie);
            }

在login.jsp中进行判断 然后在表单中写入value="<%=??>"

<%

    String username = "";
    String password = "";
    //获取当前站点的所有Cookie
    Cookie[] cookies = request.getCookies();
    if(cookies!=null) {
        for (int i = 0; i < cookies.length; i++) {//对cookies中的数据进行遍历,找到用户名、密码的数据
            if ("username".equals(cookies[i].getName())) {
                username = cookies[i].getValue();
            } else if ("password".equals(cookies[i].getName())) {
                password = cookies[i].getValue();
            }
        }
    }
%>

猜你喜欢

转载自blog.csdn.net/hewenjing8168/article/details/80377126