javaWeb-----使用jsp+dao完成注册 使用jsp+dao完成增删改查的操作

8 篇文章 0 订阅

1. 使用jsp+dao完成注册。
2. 使用jsp+dao完成增删改查的操作。

1.注册(增加)

1.1.流程

 register.jsp:

<%--
  Created by IntelliJ IDEA.
  User: ykq
  Date: 2022/5/11
  Time: 14:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册页面</title>
    <script>
         function checkUsername(){
              var username = document.getElementsByName("username")[0].value;
              if(username==null || username.trim()==""){
                   alert("请输入账号");
                   return false;
              }
              return true;
         }
         function checkPassword(){
             //获取密码输入框的值
             var password=document.getElementsByName("password")[0].value;
             if(password==null || password.trim()==""){
                 alert("请输入密码");
                 return false;
             }
             return true;
         }
         function checkRealname(){
                var realname=document.getElementsByName("realname")[0].value;
                if(realname==null || realname.trim()==""){
                     alert("请输入姓名");
                     return false;
                }
                return true;
         }

         function ck(){
             if(checkUsername()&&checkPassword()&&checkRealname()){
                 return true;
             }
             return false;
         }
    </script>
</head>
<body>

<h1>注册界面</h1>
<%--registerDo 后缀为Do的都是处理页面,就是在浏览器不显示该界面 他就相当于的一个过渡。页面和dao之间的联系。--%>
<form action="registerDo.jsp" method="post" onsubmit="return ck()">
      账号:<input type="text" name="username" onblur="checkUsername()"/><br>
      密码:<input type="password" name="password" onblur="checkPassword()"/><br>
      姓名:<input type="text" name="realname" onblur="checkRealname()"/><br>
      <input type="submit" value="提交"/>
</form>

</body>
</html>

registerDo.jsp:

<%@ page import="com.ykq.dao.UserDao" %>
<%@ page import="com.ykq.entity.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        //设置编码
        request.setCharacterEncoding("utf-8");
        //接受注册的信息
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String realname = request.getParameter("realname");//""

        //通过调用dao方法把接受的注册信息存入数据库表中。
        UserDao userDao = new UserDao();
        User user=new User(username,password,realname);
        userDao.insert(user);

        //跳转
        response.sendRedirect("login.jsp");
    %>
</body>
</html>

2.查询所有的学生信息并展示到网页

(1)封装一个学生的实体类

public class Student {
    private int id;
    private String stuName;//字段名stu_name 那么我们java属性尽量符合驼峰命名
    private String address;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

(2) 封装一个学生的操作类

//查询所有学生信息的方法
    public List<Student> findAll(){
        List<Student> list = new ArrayList<>();
        try {
              getConn();//不行因为closeAll关闭的是父类中的资源
              String sql="select * from t_student";
              ps = connection.prepareStatement(sql);
              rs=ps.executeQuery();
              while(rs.next()){
                   Student student=new Student();
                   student.setId(rs.getInt("id"));
                   student.setStuName(rs.getString("stu_name"));
                   student.setAddress(rs.getString("address"));
                   student.setAge(rs.getInt("stu_age"));
                   list.add(student);
              }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            closeAll();
        }
        return list;
    }

(3)页面就调用学生的操作类中的查询所有的方法

<%@ page import="com.ykq.dao.StudentDao" %>
<%@ page import="com.ykq.entity.Student" %>
<%@ page import="java.util.List" %><%--
  Created by IntelliJ IDEA.
  User: ykq
  Date: 2022/5/10
  Time: 15:35
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
===============登录成功欢迎来到qy151的主场=========================
<table border="1" cellpadding="0" cellspacing="0" width="600" align="center">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>地址</th>
        <th>操作</th>
    </tr>
    <%
        StudentDao studentDao = new StudentDao();
        List<Student> list = studentDao.findAll();
        for (Student student : list) {
            //插入html标签 out.print(); 这种拼接字符串麻烦
    %>
    <tr>
         <td><%=student.getId()%></td>
         <td><%=student.getStuName()%></td>
         <td><%=student.getAge()%></td>
         <td><%=student.getAddress()%></td>
         <td>删除 修改</td>
    </tr>
    <%
        }
    %>
</table>
</body>
</html>

3.删除

3.1.原理

按钮获取id比较复杂,这里就用超链接获取id

 deleteDo.jsp:

<%@ page import="com.ykq.dao.StudentDao" %><%--
  Created by IntelliJ IDEA.
  User: ykq
  Date: 2022/5/11
  Time: 15:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
      <%
           //接受传递的id值
          String id = request.getParameter("id");
          //调用studentDao中的删除方法把接受的id传递给该方法。
          StudentDao studentDao=new StudentDao();
          studentDao.delete(Integer.parseInt(id));//为什么报错- Integer.parseInt(id) 把数字字符串转换为整形

          //跳转
          response.sendRedirect("success.jsp");
      %>
</body>
</html>

studentDao:

 //根据id删除学员信息 测试该方法
    public void delete(int id){
        String sql="delete from t_student where id=?";
        edit(sql,id);
    }

1. 修改功能.
2. 完善我们的登录功能。
3. jsp中9个内置对象。
4. jsp中四大域对象的作用范围。

4.修改功能

update.jsp

<%@ page import="com.ykq.dao.StudentDao" %>
<%@ page import="com.ykq.entity.Student" %><%--
  Created by IntelliJ IDEA.
  User: ykq
  Date: 2022/5/12
  Time: 14:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>修改界面</title>
</head>
<body>
<%
    String id = request.getParameter("id");
    //根据id查询该id对应的学员信息---Dao
    StudentDao studentDao = new StudentDao();
    Student student = studentDao.findById(Integer.parseInt(id));

    //由于修改需要按照id进行修改 所以我们应该把id传递过去
%>
<form action="updateDo.jsp" method="post">
    <%--隐藏域就是再浏览器上看不见该输入框,但是该隐藏域也属于表单元素。会随着表单的提交而被提交--%>
    <input type="hidden" value="<%=student.getId()%>" name="id"/>
<%--     编号:<input type="text" value="<%=student.getId()%>" name="id" readonly/><br>--%>
     账号:<input type="text" value="<%=student.getStuName()%>" name="stuName"/><br>
     年龄:<input type="text" value="<%=student.getAge()%>" name="age"/><br>
     账号:<input type="text" value="<%=student.getAddress()%>" name="address"/><br>
    <%--整个按钮是表单提交按钮 表单提交只会提交表单元素的数据。--%>
    <input type="submit" value="确认修改"/>
    <%--这个按钮是普通按钮它不会让表单提交走。
    <input  type="button" value="迪纳基" onclick="location.href='a.jsp?'"/>
    --%>
</form>

</body>
</html>

dao

//根据id查询学员信息
    public  Student findById(int id){ //怀疑数据库中的类型为int. 可以使用string
        Student student=null;
        try {
            getConn();//不行因为closeAll关闭的是父类中的资源
            String sql = "select * from t_student where id=?";
            ps = connection.prepareStatement(sql);
            ps.setInt(1,id);
            rs = ps.executeQuery();
            while (rs.next()) {
                student = new Student();
                student.setId(rs.getInt("id"));
                student.setStuName(rs.getString("stu_name"));
                student.setAddress(rs.getString("address"));
                student.setAge(rs.getInt("stu_age"));
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            closeAll();
        }
        return student;
    }

updateDo.jsp

<%@ page import="com.ykq.dao.StudentDao" %>
<%@ page import="com.ykq.entity.Student" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    //编码设置
    request.setCharacterEncoding("utf-8");
    //接受修改后的学员信息
    String id = request.getParameter("id");
    String name = request.getParameter("stuName");
    String age = request.getParameter("age");
    String address = request.getParameter("address");
    // 输出你接受的数据---目标防止有错误。
    //把接受的信息放入数据库。---dao.
    StudentDao studentDao=new StudentDao();
    Student s=new Student(Integer.parseInt(id),name,address,Integer.parseInt(age));
    studentDao.update(s);

    //跳转
    response.sendRedirect("success.jsp");

%>
</body>
</html>

dao:

//修改学员信息---你必须测试该方法是否正确。
    public void update(Student student){ //这里传递Student对象目的为后期框架做嫁衣
         String sql = "update t_student set stu_name=?,stu_age=?,address=? where id=?";   edit(sql,student.getStuName(),student.getAge(),student.getAddress(),student.getId());
    }

5.登陆的完善

5.1.登陆失败后应该有提示

登录失败时跳转到登录页面携带一个参数

 登录页面:

 5.2.登录成功保存登录的信息

把登录者的信息保存起来以供其他页面能够拿到当前登录者的信息。

把登录者的信息保存到哪里了? ----- session会话中。

什么是session会话? 浏览器与服务器进行会话的过程。当浏览器关闭那么表示会话结果。

session中保存的周期: 一次会话,如果会话结束那么保存到session中的数据也会丢失。

什么时候会话结束: (1)浏览器关闭 (2)服务器关闭。(3)超时 默认30分钟 如果30分钟浏览器没有刷新则超时,如果30分钟内刷新了则重新计时。

jsp中内置了一个session对象。

修改我们的登录方法:

//根据账号和密码查询数据库
    public User findByNameAndPwd(String name,String pwd){
         User user=null;
         try{
             connection= getConn();
             String sql="select * from t_user where username=? and password=?";
             ps=connection.prepareStatement(sql);
             ps.setObject(1,name);
             ps.setObject(2,pwd);
             rs = ps.executeQuery();
             while (rs.next()){//进入while表明根据账号和密码查询出结果了。
                 user=new User();//实例化对象。
                 user.setUsername(rs.getString("username"));
                 user.setRealname(rs.getString("realname"));
                 user.setPassword(rs.getString("password"));
                 user.setId(rs.getInt("id"));
             }
         }catch (Exception e){
             e.printStackTrace();
         }finally {
             closeAll();
         }
         return user;
    }

修改loginDo.jsp:

session对象中常见的方法:

1. setAttribute(key,value);key必须为String   value是Object类型。
2. removeAttribute(key);移除session中指定的key
3. invalidate():清空session中所有的元素。
4. getAttribute(key);根据key获取session会话的数据

5.3.session会话的使用。---保存登录者的信息

如果没有登录 无法访问其他页面。

根据session中是否有用户 的信息,如果有表示登录成功,如果没有则表示没有登录。

 作用:

1. 完成登录(把用户信息保存到session会话中)--注册
2. 主页---显示所有部门信息 (如果没有登录不允许访问主页)
3. 删除 修改  添加功能.
4. 完成退出。

5.4.session会话退出

logout.jsp

总结

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值