• 新手详解JAVA+数据库+JSP完成简单页面


    本篇以数据库添加为例(本例中数据库名为“xinxi”表单名字为“stud”)

    准备---实体层:

    package entity;
    
    public class Student {
        private String name;
        private String adress;
        private String qq;
        public void setName(String name) {
            this.name=name;
        }
        public String getName() {
            return name;
        }
        public void setAdress(String adress) {
            this.adress=adress;
        }
        public String getAdress() {
            return adress;
        }
        public void setQq(String qq) {
            this.qq=qq;
        }
        public String getQq() {
            return qq;
        }
        public Student() {
        }
        public Student(String n,String a,String q) {
            name=n;
            adress=a;
            qq=q;
        }
    }

    准备---连接数据库:

    package util;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class Shujuku {
         public static Connection conn(){
             String url="jdbc:sqlserver://localhost:1433;DatabaseName=xinxi";//填写你的数据库名
             String userName="sa";//填写你的用户名,我的是sa
             String userPwd="********";//填写你的密码
             Connection connection=null;
    
      try{
          Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
          System.out.println("加载驱动成功!");
    
      }catch(Exception e){
    
               e.printStackTrace();
    
               System.out.println("加载驱动失败!");
       }
     try{
        connection=DriverManager.getConnection(url,userName,userPwd);
     System.out.println("连接数据库成功!");
     }catch(Exception e){
            e.printStackTrace();
            System.out.print("SQL Server连接失败!");
      }    
     return connection;
    }
    public static void close (Statement state, Connection conn) {//关闭
        if (state != null) {
            try {
                state.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    public static void close (ResultSet rs, Statement state, Connection conn) {//关闭
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        if (state != null) {
            try {
                state.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    }
    
     

    1.servlet(首先StuService ts=new StuService();//新建service实体对象,以便后来调用service中add()方法

    package servlet;
    import service.*;
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import entity.*;
    @WebServlet("/StuServlet")
    public class StuServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            request.setCharacterEncoding("utf-8");
            String method = request.getParameter("method");
            if(method.equals("add"))
            {
                add(request,response);
            }
        }
        StuService ts=new StuService();
        private void add(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
            req.setCharacterEncoding("utf-8");
            String name = req.getParameter("name");//从jsp中获取参数name
            String adress=req.getParameter("adress");
            String qq=req.getParameter("qq");
            Student stu=new Student(name,adress,qq);//新建
            int k=ts.add(stu);
            if(k==2) {
                req.setAttribute("message", "添加成功");//setAttribute方法用于将内容保存在对象中,传到add.jsp中
                req.getRequestDispatcher("add.jsp").forward(req,resp);//getRequestDispatcher方法用于进入下一个页面
            } 
            if(k==0)
            {
                req.setAttribute("message", "重复,请重新录入");
                req.getRequestDispatcher("add.jsp").forward(req,resp);
            }
            if(k==1)
            {
                req.setAttribute("message", "数据库添加失败");
                req.getRequestDispatcher("add.jsp").forward(req,resp);
            }
        }
    }

    ①创建方法add(),Servlet从jsp中获取参数,新建实体对象Student stu=new Student(name,adress,qq);

    ②调用service层,检验添加的准确性

    StuService ts=new StuService();//新建service对象

    if(ts.add(stu)){

    //如果service对象tsBoolean add(stu)方法返回真值true,页面要显示添加成功

    //req.setAttribute("message", "添加成功");"添加成功"内容保存在req对象参数message中,传递给add.jsp

    //req.getRequestDispatcher("add.jsp").forward(req,resp);进入下一个界面(这里是add.jsp

    }

    else{

    //收到返回值为false,添加失败

    // "重复,请重新录入"内容保存在req对象参数message中,传递给add.jsp

    //进入下一个界面(这里是add.jsp

    }

    2. Service(新建dao实体对象,后面要调用dao层方法

    package service;
    
    import dao.StuDao;
    import entity.Student;
    
    public class StuService {
        StuDao sdao=new StuDao();
        public int add(Student stu) {
            int f=0;
            if(!sdao.rename(stu.getName())) {
                f=1;
                if(sdao.add(stu))
                f=2;
            }
            return f;    
        }
    }

    ①创建 add(Student stu){}方法,检验添加的准确性

    ②调用dao层后台程序方法rename()检验是否重名

    if(!sdao.rename(stu.getName())) {//如果没有重复

    sdao.add(stu);//添加

    f=true;//返回真值

    }

    如图,直接在提示错误中点击创建方法即可

    3. Dao(后台程序)

    在这里编写所需的底层程序:

    rename()//验证名字是否唯一

    Add()//添加

    public class StuDao {
    
        public boolean rename(String name) {
            // 检验名字是否重复
            boolean f=false;
            String sql="select name from stud where name='"+name+"'";//数据库语句,查询界面输入和表stud中name是否重复
            Connection conn = Shujuku.conn();//创建连接
            Statement state = null;//建立Statement对象,执行静态SQL语句
            ResultSet rs = null;//ResultSet对象 是查询数据库时的返回对象,读取返回结果集
            
            try {
                state = conn.createStatement();
                rs = state.executeQuery(sql);
                while (rs.next()) {//不重复,返回true
                    f = true;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                Shujuku.close(rs, state, conn);
            }
            return f;
        }
    
        public boolean add(Student stu) {
            //添加
            String sql = "insert into stud(name,adress,qq) values('" +stu.getName() + "','" + stu.getAdress() + "','" + stu.getQq() + "')";
            Connection conn = Shujuku.conn();
            Statement state = null;
            boolean f = false;
            int a=0;
            try {
                state = conn.createStatement();
                a=state.executeUpdate(sql);//添加
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                Shujuku.close(state, conn);
            }
            if (a > 0) {
                f = true;
            }
            return f;
        }
    }

    4. Add.jsp

    编写前端页面;

    应用javascript验证客户端表单合法性。

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <%
             Object message = request.getAttribute("message");
             if(message!=null && !"".equals(message)){
         
    %>
         <script type="text/javascript">
                  alert("<%=request.getAttribute("message")%>");
             </script>
    <%} %>
        <div align="center">
            <h1 style="color: red;">信息录入</h1>
            <a href="index.jsp">返回主页</a>
            <form action="StuServlet?method=add" method="post" onsubmit="return check()">
                <div >
                    姓名<input type="text" id="name" name="name"/>
                </div>
                <div >
                    联系方式<input type="text" id="qq" name="qq" />
                </div>
                <div >
                    地址<input type="text" id="adress" name="adress" />
                </div>
                <div >
                    <button type="submit" >&nbsp;&nbsp;&nbsp;</button>
                </div>
            </form>
        </div>
        <script type="text/javascript">
            function check() {
                var name = document.getElementById("name");;
                var qq = document.getElementById("qq");
                var adress = document.getElementById("adress");
                
                //非空
                if(name.value == '') {
                    alert('名字为空');
                    name.focus();
                    return false;
                }
                if(qq.value == '') {
                    alert('联系方式为空');
                    qq.focus();
                    return false;
                }
                if(adress.value == '') {
                    alert('地址为空');
                    adress.focus();
                    return false;
                }
            }
        </script>
    </body>
    </html>

     

  • 相关阅读:
    粘包_Server
    初见UDP_Server
    初见UDP_Client
    TCP/UDP协议
    网络编程相关概念
    mmap实现大文件快速拷贝
    生成这消费者问题(多线程实现)
    线程同步互斥实现资源访问
    信号灯(线程互斥)
    线程属性
  • 原文地址:https://www.cnblogs.com/sengzhao666/p/10181806.html
Copyright © 2020-2023  润新知