0726作业

根据课堂案例,分层设计,连接数据库
1、登录
    成功:查询所有用户信息,然后转到主页home.jsp
    失败:回到登录页面

2、注册
    成功:转到登录页面
    失败:继续注册

3、查询所有用户信息
    通过JSTL标准标签库和EL表达式展示数据

    注意:
        1.页面元素<%@page..%>中添加属性isELIgnored="false"取消忽略EL表达式
        2.注意添加<%@taglib..%> 引入JSTL标准标签库

自己的代码比较粗糙而且我使用了lombok插件:

这个是实体类pojo,懂得都懂,不懂就问。

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private  int id;
    private String username;
    private String pwd;
    private String phone;
    private String name;
}

util我使用的是之前用的有点出入单,不影响我的代码运行:

public class Dbhelp {
    public Connection getconn() {
        Connection conn=null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/mjh","root","123456");
        } catch (ClassNotFoundException | SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }
    public static void main(String[] args) {
        System.out.println(new Dbhelp().getconn());


    }
}

如何接口:一个全查一个添加:

public interface studentDao {
     Student login(String  username, String pwd);
     List<Student> findAll();
      int addStudent(Student s);
}

然后是实现类:

ublic class studentImpl implements studentDao {
    Connection conn=null;
    PreparedStatement ps=null;
    ResultSet rs=null;
    @Override
    public Student login(String username, String pwd) {
        String sql="select * from student where username=? and pwd=?";
        conn=new Dbhelp().getconn();
        Student s=null;
        try {
            ps=conn.prepareStatement(sql);
            ps.setString(1, username);
            ps.setString(2, pwd);
            rs=ps.executeQuery();
            if(rs.next()) {
                s=new Student();
                s.setId(rs.getInt(1));
                s.setUsername(rs.getString(2));
                s.setPwd(rs.getString(3));
                s.setPhone(rs.getString(4));
                s.setName(rs.getString(5));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return s;
    }

    @Override
    public List<Student> findAll() {
        List<Student> li=new ArrayList<Student>();
        conn=new Dbhelp().getconn();
        String sql="select id,username,pwd,phone,name from student";
        try {
            ps=conn.prepareStatement(sql);
            rs=ps.executeQuery();
            while(rs.next()) {
                Student s=new Student();
                s.setId(rs.getInt(1));
                s.setUsername(rs.getString(2));
                s.setPwd(rs.getString(3));
                s.setPhone(rs.getString(4));
                s.setName(rs.getString(5));
                li.add(s);
            }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return li;
    }

    @Override
    public int addStudent(Student s) {
        int flag=0;
        String sql="insert into student(username,pwd,phone,name)  values(?,?,?,?);";
        conn=new Dbhelp().getconn();

        try {
            ps=conn.prepareStatement(sql);
            ps.setString(1, s.getUsername());
            ps.setString(2, s.getPwd());
            ps.setString(3, s.getPhone());
            ps.setString(4, s.getName());
            flag=ps.executeUpdate();

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return flag;
    }
}

接下来就是service了我没有写在一个里面方法不是很多就分开单独写了:

第一个是登录,第二个是添加,第三个是全查

 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("login");
        //接受请求
        studentDao sd=new studentImpl();
        //执行请求
            String username = req.getParameter("username");
            String pwd = req.getParameter("pwd");
            Student s = sd.login(username, pwd);
            if (s != null) {
                System.out.println(s);
                System.out.println("登入成功");
                HttpSession session = req.getSession();
                session.setAttribute("s", s);
                req.getRequestDispatcher("home").forward(req, resp);
            } else {
                System.out.println("登入失败");
                req.getRequestDispatcher("login.jsp").forward(req,resp);
            }
            
        }

//add  


 //

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html; charset=UTF-8");
        studentDao sd=new studentImpl();
        String username=req.getParameter("username");
        String pwd=req.getParameter("pwd");
        String phone=req.getParameter("phone");
        String name=req.getParameter("name");
        //接下来把数据存到数据库,所以需要一个student对象来存放这些数据
        Student s=new Student();
        s.setUsername(username);
        s.setPwd(pwd);
        s.setPhone(phone);
        s.setName(name);
        if(s.getName()!=null &&s.getName()!=""){
            //把数据存到数据库。
            int i=sd.addStudent(s);
            System.out.println(i);
            //应该使用重定向,把之前新增的这个操作到此截断。后续在查询的这里重复
            resp.sendRedirect("login");
        }else {
            req.getRequestDispatcher("add.jsp").forward(req, resp);
        }
    }




//home
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        studentDao sd=new studentImpl();
        List<Student> li=sd.findAll();
        req.setAttribute("aa", li);
        System.out.println(li);
        //请求转发,跳转到前台把它显示出来.因为需要带着值,所以使用请求转发.
        req.getRequestDispatcher("home.jsp").forward(req, resp);
    }

 然后就是前台代码了样式比较low:

<body>
    <h1>请登入</h1>
    <form action="login" method="post">
        请输入账号:<input type="text" name="username" value="zhangsan"placeholder="请输入用户名" /><br />
        请输入密码:<input type="password" name="pwd" value="123456"placeholder="请输入密码" /><br/>
        <input type="submit" value="登陆"/>
    </form>

    <a href="add.jsp">注册</a>
</body>

add;

<form action="add" method="post" style="align-content: center">
    请输入账号:<input type="text"  name="username"/>
    <br/>请输入密码:<input type="password" name="pwd"/>
    <br/>请输入手机号:<input type="text" name="phone"/>
    <br/> 请输入名字:<input type="text" name="name" />
    <br/><input type="submit" name="" value="提交"/>
    <input type="reset" name="" value="清空"/>
    </form>
</body>

home:

<body>
<span>
	<%  Student ss= (Student) session.getAttribute("s");%>
	欢迎你:<%=ss.getName() %>
	</span>
<h1>登录成功</h1>
<table border="1px" width="800px">
	<tr>
		<td>编号</td>
		<td>账号</td>
		<td>密码</td>
		<td>手机号</td>
		<td>姓名</td>
	</tr>
	<%
		//这是获取后台创来的集合.getAttribute()方法的参数时后台传过来的集合的代号.
		List<Student> li = (List<Student>) request.getAttribute("aa");
		//使用for循环遍历.
		for (Student s : li) {
	%>
	<tr>
		<td><%=s.getId()%></td>
		<td><%=s.getUsername()%></td>
		<td><%=s.getPwd()%></td>
		<td><%=s.getPhone()%></td>
		<td><%=s.getName()%></td>
	</tr>
	<%
		}
	%>
</table>

</body>

还有待改善就这有凑活看吧,运行截图就不放了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值