练习一般的web项目

**

web项目的一般练习

**
1.过滤器用来解决中文字符集乱码,它需要实现Filter接口,并重写doFilter函数

package com.filter;

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

public class EncodingFilter implements Filter {

    public EncodingFilter() {
        System.out.println("执行过滤器");
    }

    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain filterChain) throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=UTF-8");
        filterChain.doFilter(request, response);
    }

    public void destroy() {

    }
}

2.处理对数据库的连接操作(用户名或密码按照自己的数据库更改)

package com.util;

import java.sql.*;
/*数据库工具类:
 * 1.连接数据库
 * 2.增删改查
 * 3.执行SQL语句并返回执行结果
 * 4.关流
 * */
public class DBCoon {
    //serverTimezone=UTC设置连接时区,不设置可能会报时区错误
    static String url = "jdbc:mysql://localhost:3306/vip05?serverTimezone=UTC" +
            "&useUnicode=true&characterEncoding=utf-8";
    static String username = "root";
    static String password = "123456";


    static Connection conn = null;
    static ResultSet rs = null;
    static PreparedStatement ps = null;
    /*连接数据库*/
    public static void init() {
        try {
            /*1.加载驱动获得驱动管理器*/
            Class.forName("com.mysql.jdbc.Driver");
            /*2.连接数据库*/
            conn = DriverManager.getConnection(url, username, password);
            System.out.println("数据库连接成功");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("数据库连接失败");
        }
    }

    /*查询数据(传递参数)*/
    public static ResultSet searchSql(String sql, Object[] args) {
        try {
            ps = conn.prepareStatement(sql);
            for (int j = 0; j < args.length; j++) {
                ps.setObject(j + 1, args[j]);
            }
            rs = ps.executeQuery();
            System.out.println("数据查询成功");
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("数据查询失败");
        }
        return rs;
    }

    /*增删改查数据(传递参数)*/
    public static int addUpdDel(String sql, Object[] args) {
        int i = 0;
        try {
            ps = conn.prepareStatement(sql);
            for (int j = 0; j < args.length; j++) {
                ps.setObject(j + 1, args[j]);
            }
            i = ps.executeUpdate();
            System.out.println("增删改成功");
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("增删改失败");
        }
        return i;
    }

    /*不传递参数查询所有用户信息*/
    public static ResultSet getUsers(String sql) {
        try {
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();
            System.out.println("数据查询成功");
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("数据查询失败");
        }
        return rs;
    }

    /*关流*/
    public static void close() {
        try {
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            System.out.println("数据流关闭异常");
        }
    }

}

3.实现对用户登录的操作:

package com.service;

import com.dao.IUserDao;
import com.dao.UserDao;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class LoginServlet extends HttpServlet {

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doPost(req, resp);
    }


    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        /*req.getParameter获取前台输入框的值即input框里的name属性的值*/
        String name = req.getParameter("name");
        String pwd = req.getParameter("pwd");
        IUserDao ud = new UserDao();
        if(ud.login(name,pwd)){
            /*如果要获取request存放的参数则使用请求转发,路径加不加/都行 */
            System.out.println("用户"+name+"登录成功");
            /*req.setAttribute向request域中添加名为msg对象object为string类型的信息*/
            req.setAttribute("msg","用户"+name+"登录成功");

            req.getRequestDispatcher("success.jsp").forward(req, resp);
        }else {
            /*如果不获取参数则使用重定向到错误页面*/
            resp.sendRedirect("error.jsp");
        }
    }

}

4.创建一个 用来实现用户注册的操作:


public class RegisterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        String pwd = req.getParameter("pwd");
        String sex = req.getParameter("sex");
        String home = req.getParameter("home");
        String info = req.getParameter("info");
        //实例化一个对象,组装属性
        Users user = new Users();
        user.setName(name);
        user.setPwd(pwd);
        user.setSex(sex);
        user.setHome(home);
        user.setInfo(info);
        IUserDao ud = new UserDao();
        if (ud.register(user)) {
            System.out.println("用户" + name + "注册成功");
            req.setAttribute("msg", "用户" + name + "注册成功");
            req.getRequestDispatcher("success.jsp").forward(req, resp);
        } else {
            resp.sendRedirect("error.jsp");
        }
    }
}

5.查询全部用户成功,返回数据库中所有用户信息

public class SearchAllServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        IUserDao ud = new UserDao();
        List<Users> users = ud.searchAll();
        req.setAttribute("users",users);
        System.out.println("查询全部用户成功");
        req.getRequestDispatcher("/showAll.jsp").forward(req, resp);
    }
}

6.数据库中更新用户信息:

public class UpdateServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);}
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id = req.getParameter("id");
        int userId = Integer.parseInt(id);
        String name = req.getParameter("name");
        String pwd = req.getParameter("pwd");
        String sex = req.getParameter("sex");
        String home = req.getParameter("home");
        String info = req.getParameter("info");

        IUserDao ud = new UserDao();

        if(ud.update(userId, name, pwd, sex, home, info)){
            req.getRequestDispatcher("searchAll").forward(req, resp);
        }else{
            resp.sendRedirect("error.jsp");
        }
    }
}

7.删除用户信息:

public class DeleteServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id = req.getParameter("id");
        System.out.println("删除的用户id为:"+id);
        /*获取到的id是一个引用数据类型即对象,需要变成基本数据类型作为参数传输*/
        int userId = Integer.parseInt(id);
        /*调用dao层,返回值是一个整形数字*/
        IUserDao ud = new UserDao();
        /*delete方法的参数为int id,所以必须把从jsp页面获取到的id转换成基本数据类型*/
        if(ud.delete(userId)){
            /*站内转发:请求转发到searchAll的servlet*/
            req.getRequestDispatcher("searchAll").forward(req, resp);
        }else{
            /*站外转发:重定向到首页*/
            resp.sendRedirect("error.jsp");
        }

    }
}

login.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
<form action="login" method="post" style="margin: 0 auto;">

    账号:<input type="text" name="name"><br><br>
    密码: <input type="password" name="pwd"><br><br>

    <input type="submit"value="登录"name="">
    <input type="reset"value="重置"><br>
</form>
<a href="register.jsp">新用户注册</a>
</body>
</html>

8.查看所有用户:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <title>所有用户信息</title>
</head>
<body>
<table  width="600" border="1" cellpadding="0" >
    <tr>
        <th>ID</th>
        <th>姓名</th>
        <th>性别</th>
        <th>密码</th>
        <th>家乡</th>
        <th>备注</th>
        <th>操作</th>
    </tr>
    <c:forEach var="U" items="${users}">
        <form action="update" method="post">
            <tr>
                <td><input type="text" value="${U.id}" name="id" ></td>
                <td><input type="text" value="${U.name}" name="name"></td>
                <td><input type="text" value="${U.sex}" name="sex"></td>
                <td><input type="text" value="${U.pwd}" name="pwd"></td>
                <td><input type="text" value="${U.home}" name="home"></td>
                <td><input type="text" value="${U.info}" name="info"></td>
                <td><a href="delete?id=${U.id}">删除</a>  <input type="submit" value="更新"/></td>
            </tr>
        </form>
    </c:forEach>
</table>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值