JavaBean+Servlet+Jsp实战

课程设计目的

  • JSP网络程序开发设计,结合本专业物联网将平时练习和综合实践结合起来,要求掌握HTML+CSS+JavaScript学会制作站点规划与页面开发的方法
  • 熟练掌握jsp、Bean、servlet编程,加深对jsp技术的理解与应用
  • 学会分析设计一个较复杂的网络应用系统,增加网站建设与代码调试的实际经验
  • 不过重要的一点是,基于模型-视图-控制器 模式(MVC)设计较为复杂的系统 PS(以上纯属吹#)

网站总体设计

  1. 系统软硬件环境需求
    内存:32MB或者更高
    硬盘空间: 2GB或以上

  2. 软件环境
    操作系统: Window XP/2000/Win7或以上
    Web服务器: Tomcat6.0或以上版本
    开发语言:JSP或Java(JDK1.7以上版本)
    开发平台:MyEclipse
    数据库:MySQL
    客户端:IE6.0或以上版本

  3. 功能模块实现
    用户登录、用户管理、设备管理、数据记录

数据库设计

系统文件架构

前台模块代码实现

公共类的编写

数据库的连接与操作类

iot.utils;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.sql.Connection;
import java.sql.DriverManager;
public class ConnDb {
private Connection cn=null;
public Connection getcon(){
try {
String url="jdbc:mysql://localhost:3306/iotdb?useUnicode=true&characterEncoding=utf8";
Class.forName("com.mysql.jdbc.Driver");
String userName ="root";
String password="CaiJL";//注意根据机房的账号密码进行修改
cn =DriverManager.getConnection(url,userName,password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return cn;
}
}

Ps(记住得在WEB-INF/lib里面导入JDBC驱动程序库文件)

创建字符串处理类

iot.utils;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class CodeExchange {
public static String chinese(String str){
if(str==null) str="";
try{
str=new String(str.getBytes("ISO-8859-1"),"utf-8");
}catch(Exception e){
str="";
e.printStackTrace();
}
return str;
}
public static String specilSymbol(String str){
str=str.replace("&", "&");
str=str.replace("<", "&lt;");
str=str.replace(">", "&gt;");
str=str.replace("'", "&quot;");
str=str.replace("\0x0d", "<br>");
return str;
}
}

系统后台模块代码实现

用户管理模快代码实现

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

    //有删除、添加和修改传递action参数
            String action=request.getParameter("action");//通过传递action的参数值来决定执行哪个动作
            if(action!=null){
                if(action.equals("delete")){
                    String id=request.getParameter("id");
                    if(id!=null&&id.length()>0){
                        UserDao userDao=new UserDao();
                        if(userDao.delete(id)){
                            request.setAttribute("msg", "删除成功!");
                        }else{
                            request.setAttribute("msg", "删除失败!");
                        }                    

                    }else{
                        response.sendRedirect("error.jsp");//设计一个错误页面来显示
                        return;
                    }
                }else if(action.equals("add")){
                    Tuser user=new Tuser();
                    user.setUsername(CodeExchange.chinese(request.getParameter("username")));
                    user.setPassword(CodeExchange.chinese(request.getParameter("password")));
                    user.setUsertype(CodeExchange.chinese(request.getParameter("usertype")));
                    UserDao userDao=new UserDao();
                    //这里还可以进一步查询用户名是否存在,避免用户名重复
                    if(userDao.add(user)){
                        request.setAttribute("msg", "添加成功!");
                    }else{
                        request.setAttribute("msg", "添加失败!");
                    }


                }else if(action.equals("update")){

                    String id=request.getParameter("id");
                    if(id!=null&&id.length()>0){
                        UserDao userDao=new UserDao();
                        ArrayList<Tuser> users=    userDao.query(" id=" + id);
                        if(users!=null && users.size()>0){
                            Tuser user=users.get(0);//获取用户信息
                            request.setAttribute("user", user);
                            //转向修改页面编辑信息
                            request.getRequestDispatcher("useredit.jsp").forward(request, response);
                            return;
                        }else{
                            response.sendRedirect("error.jsp");//设计一个错误页面来显示
                            return;
                        }

                    }else{
                        response.sendRedirect("error.jsp");//设计一个错误页面来显示
                        return;
                    }

                }else if(action.equals("updateSave")){

                    Tuser user=new Tuser();
                    user.setUsername(CodeExchange.chinese(request.getParameter("username")));
                    user.setPassword(CodeExchange.chinese(request.getParameter("password")));
                    user.setUsertype(CodeExchange.chinese(request.getParameter("usertype")));
                    //这里还可以进一步校验id的合法性
                    user.setId(Long.parseLong(request.getParameter("id")));

                    UserDao userDao=new UserDao();
                    //这里还可以进一步查询用户名是否存在,避免用户名重复
                    if(userDao.update(user)){
                        request.setAttribute("msg", "修改成功!");
                    }else{
                        request.setAttribute("msg", "修改失败!");
                    }

                }else if(action.equals("login")){

                    Tuser user=new Tuser();
                    user.setUsername(CodeExchange.chinese(request.getParameter("username")));
                    user.setPassword(CodeExchange.chinese(request.getParameter("password")));

                    UserDao userDao=new UserDao();
                    ArrayList<Tuser> users=    userDao.query(" username='" + user.getUsername() +"' and password='"+user.getPassword()+"'");
                    if(users!=null && users.size()>0){
                        user=users.get(0);//获取用户信息
                        HttpSession session = request.getSession();
                        //用户登录信息存到session
                        session.setAttribute("loginusername", user.getUsername());
                        session.setAttribute("loginusertype", user.getUsertype());
                        //转向修改页面编辑信息
                        request.getRequestDispatcher("index.jsp").forward(request, response);
                        return;
                    }else{
                        request.setAttribute("msg", "登录失败!");
                        request.getRequestDispatcher("login.jsp").forward(request, response);
                        return;
                    }

                }        
                else{
                    //不能识别动作
                    response.sendRedirect("error.jsp");//设计一个错误页面来显示
                    return;
                }
            }    

            //查询条件
            String whereSQL="";
            String keyword=CodeExchange.chinese(request.getParameter("keyword"));
            String fieldname=request.getParameter("fieldname");
            if(keyword!=null&&fieldname!=null&&fieldname.length()>0&&keyword.length()>0){
                //id为整型
                if(fieldname.equals("id")){
                    whereSQL=fieldname+"="+keyword;
                }
                //其他为字符串型,要加入单引号
                else
                {
                    whereSQL=fieldname+" like '%"+keyword+"%' ";
                }
                //回传给页面显示查询条件,否则会清空
                request.setAttribute("fieldname", fieldname);
                request.setAttribute("keyword", keyword);

            }

            //查询页码
            String page=request.getParameter("page");
            if(page==null){
                page="1";
            }
            UserDao userDao=new UserDao();
            ArrayList<Tuser> users =new ArrayList<Tuser>();        
            users = userDao.queryPage(whereSQL,Integer.parseInt(page));
            request.setAttribute("users", users);

            int total=userDao.count(whereSQL);
            request.setAttribute("total", total/userDao.PAGE_LENGTH + 1);//计算总页数

            request.setAttribute("currentPage", Integer.parseInt(page));
            request.getRequestDispatcher("userlist.jsp").forward(request, response);

        }

        /**
         * Initialization of the servlet. <br>
         *
         * @throws ServletException if an error occurs
         */
        public void init() throws ServletException {
            // Put your code here
        }

    }

PS(只取核心代码)

系统测试与文档支持

最后

本次网页程序设计课程代码以及源码均在GitHub,欢迎指正!

------ 本文结束感谢您的阅读 ------