开学测试——河北省重大技术需求征集系统原型

这次老师要求嵌套模板,自己并没有嵌套成功,里面用到了html、css、JavaScript(JS)、jQuery

自己使用的技术以及环境

技术:html、css、BootStrap、jsp、el表达式、Druid

环境:IDEA、Tomcat-9.0.55、MySQL数据库

首先是用户注册功能

1)用户注册需要填报用户姓名、密码、重复密码、手机号码、所属单位五项内容;

2)验证密码和重复密码保持一致

3)验证手机号码为11位数字。

密码与重复密码相同,可以使用JS进行判断,也可以在数据库建立一个重复密码字段,这里我采用的是第二种方法;

验证手机号为11位数字,可以采用HTML中的四则表达式进行限制,也可以使用JS进行判断弹出,这里我使用的是四则表达式进行限制

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
    <style>
        *{
            margin: 0px;
            padding: 0px;
            box-sizing: border-box;
        }
        body{
            background: url("img/xk.jfif");
        }

        .rg_layout{
            width: 900px;
            height: 500px;
            border:5px solid #EEEEEE;
            background: white;
            margin-left: auto;
            margin-right: auto;
            margin-top: 20px;
        }
        .rg_left{
            float: left;
            margin: 15px;
        }
        .rg_center{
            float: left;
            width: 450px;
        }
        .rg_right{
            float: right;
            margin: 15px;
        }
    </style>
    <style type="text/css">
        .rg_p1{
            color: #0000FF;
            font-size: 25px;
        }
        .rg_p2{
            color: #00FFFF;
            font-size: 25px;
        }
        a{
            text-decoration: none;
            color: #eb7350;
            font-size: 15px;
        }
        .td_left{
            width: 100px;
            text-align: right;
            height: 45px;
        }
        .td_right{
            padding-left: 50px;
        }
        #name,#password,#password1,#phone,#company{
            width: 240px;
            height: 32px;
            border: 1px solid black;
            border-radius: 5px;
            padding-left: 5px;
        }
        #btn{
            width: 150px;
            height: 40px;
            background: yellow;
            border: 1px solid yellow;
        }
    </style>
</head>
<body>
<div class="rg_layout">
    <div>
        <h2 align="center">欢迎使用河北征集注册系统</h2><br>
    </div>
    <div class="rg_left">
        <p class="rg_p1">新用户注册</p>
        <p class="rg_p2">USER REGISTER</p>
    </div>
    <div class="rg_center">
        <div class="rg_form">
            <form action="/Register" method="post">
                <table>
                    <tr>
                        <td class="td_left">姓名:</td>
                        <td class="td_right"><input type="text" name="name" id="name" placeholder="请输入姓名"></td>
                    </tr>
                    <tr>
                        <td class="td_left">密码:</td>
                        <td class="td_right"><input type="password" name="password" id="password" placeholder="请输入密码"></td>
                    </tr>
                    <tr>
                        <td class="td_left">重复密码:</td>
                        <td class="td_right"><input type="password" name="password1" id="password1" placeholder="请重复密码"></td>
                    </tr>
                    <tr>
                        <td class="td_left">手机号:</td>
                        <td class="td_right"><input type="text" name="phone" id="phone" placeholder="请输入真实手机号" onkeyup="this.value=this.value.replace(/\D/g,'')" maxlength="11"></td>
                    </tr>
                    <tr>
                        <td class="td_left">单位:</td>
                        <td class="td_right"><input type="text" name="company" id="company" placeholder="请输入所属单位"></td>
                    </tr>

                    <tr>
                        <td colspan="2" align="center"><input type="submit" value="注册" id="btn"></td>
                    </tr>
                </table>
            </form>
        </div>
    </div>
    <div class="rg_right">
        <p>已有帐号?<a href="Login.jsp">登录</a></p>
    </div>
</div>
</body>
</html>

接下来是登陆界面

(1)用户名不在数据库中,提示“该用户不存在”。

2)密码错误,提示“密码错误,请重新录入”。

3)录入验证码信息与界面显示验证码码信息不一致,提示“验证码码错误”。

4)上述信息录入正确,页面跳转到系统主界面。

验证码的实现使用的是Servlet,这个是自己在学习的时候写的

package Servlet;

import javax.imageio.ImageIO;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

@WebServlet(name = "CheckCode", value = "/CheckCode")
public class CheckCode extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //创建一个对象
        int width = 100;
        int height = 50;
        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
        //填充背景颜色
        Graphics g = image.getGraphics();//画笔
        g.setColor(Color.cyan);//设置画笔颜色
        g.fillRect(0,0,width,height);
        //画边框
        g.setColor(Color.black);
        g.drawRect(0,0,width-1,height-1);
        //随机码
        String str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        Random ran = new Random();
        StringBuilder sb = new StringBuilder();
        for(int i=1;i<=4;i++){
            int index = ran.nextInt(str.length());
            char ch = str.charAt(index);
            sb.append(ch);
            g.drawString(ch+"",width/5*i,height/2);
        }
        String checkCode_session = sb.toString();
        //将验证码存入session
        request.getSession().setAttribute("checkCode_session",checkCode_session);
        //随机划线
        g.setColor(Color.BLUE);
        for(int i=1;i<4;i++){
            int x1 = ran.nextInt(width);
            int y1 = ran.nextInt(height);

            int x2 = ran.nextInt(width);
            int y2 = ran.nextInt(height);
            g.drawLine(x1,y1,x2,y2);
        }
        //图片输出
        ImageIO.write(image,"png",response.getOutputStream());
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

登陆这一块使用的是jsp和el表达式技术,在Servlet中将前台接收的数据与数据库信息进行比较,如果错误,将错误信息存入jsp的域对象中

package Servlet;

import Bean.User;
import dao.UserDaoImpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "Login", value = "/Login")
public class Login extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");

        String phone = request.getParameter("phone");
        String password = request.getParameter("password");
        String checkcode = request.getParameter("checkcode");

        User user = new User();
        user.setPhone(phone);
        user.setPassword(password);
        UserDaoImpl user1 = new UserDaoImpl();
        //获取生成的验证码
        HttpSession session = request.getSession();
        String checkCode_session = (String) session.getAttribute("checkCode_session");
        //删除session中的验证码,保证验证码一次有效
        session.removeAttribute("checkCode_session");
        if(checkCode_session != null && checkCode_session.equalsIgnoreCase(checkcode)){
            if(user1 != null){
                response.getWriter().append("登陆成功");
                session.setAttribute("phone",phone);
                response.sendRedirect(request.getContextPath()+"/List");
            }else{
                response.getWriter().append("登陆失败,用户名或密码错误");
                request.setAttribute("login_error","错误,用户不存在/用户名或密码错误");
                request.getRequestDispatcher("/Login.jsp").forward(request,response);
            }
        }else{
            request.setAttribute("code_error","验证码错误");
            request.getRequestDispatcher("/Login.jsp").forward(request,response);
        }
    }
}

剩下的功能就是增删改查了,这里就不再上传源码了。

感想:

首先是这次没有使用JS和JQuery的原因:假期中确实学习了,但是由于使用jsp+servlet+JavaBean敲了一个完整的增删改查(也算是一个模板),所以就没有选择使用JS。

在我敲代码的过程中我发现el表达式的一个问题,数据的名称中不能有大写字母,一旦有大写字母,tomcat就会报500的错误

<c:forEach items="${demandlist}" var="demandlist" varStatus="s">
            <tr>
                <td>${s.count}</td>
                <td>${demandlist.dname}</td>
                <td>${demandlist.dsummary}</td>
                <td>${demandlist.method}</td>
                <td>${demandlist.cooperation}</td>
                <td>${demandlist.money}</td>
                <td>${demandlist.status}</td>
                <td>${demandlist.time}</td>
            </tr>

        </c:forEach>

在之后的学习中,自己有必要跟紧时代的潮流,少使用jsp,因为这个东西写好之后是真的不好维护。

这次的测试之后,自己要学习嵌套模板了,自己做一个模板,或者使用一个商用模板。

最后,在这次的练习中,自己有必要加快代码的编写速度,不然一个项目需要的时间会很长。可以专注于一个技术(jdbc或者Druid)。

 

posted on 2022-03-04 21:56  跨越&尘世  阅读(25)  评论(0编辑  收藏  举报