jsp + servlet + jdbc 基于MVC架构的Javaweb开发总结

所用软件 : IDEA . Tomcat . navicat

0 .设计过滤器,收到以及返回的参数过滤成浏览器可识别内容

package demo.filter;

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

    public class EncodingFilter implements javax.servlet.Filter {
        public EncodingFilter(){
            System.out.println("过滤器构造");
        }
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("过滤器初始化");
        }

        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            servletRequest.setCharacterEncoding("utf-8"); //将编码改为utf-8
            servletResponse.setContentType("text/html;charset=utf-8");
            filterChain.doFilter(servletRequest, servletResponse);

        }

        @Override
        public void destroy() {
            System.out.println("过滤器销毁");
        }
    }

1 .封装项目中数据处理的方法

package demo.dao;

import demo.entity.User;

import java.util.List;

public interface UserDao {
        public boolean login(String name,String pwd);//登录
        public boolean register(User user);//注册
        public List<User> getUserAll();//返回用户信息集合
        public boolean delete(int id) ;//根据id删除用户
        public boolean update(int id,String name, String pwd,String sex, String home,String info) ;//更新用户信息
    }
package demo.dao;

import demo.entity.User;
import demo.util.DBconn;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UserDaoImpl implements UserDao {
    @Override
    public boolean login(String name, String pwd) {
        boolean flag = false;
        try {
            DBconn.init();
            ResultSet rs = DBconn.selectSql("select * from user where name='" + name + "' and pwd='" + pwd + "'");
            while (rs.next()) {
                if (rs.getString("name").equals(name) && rs.getString("pwd").equals(pwd)) {
                    flag = true;
                }
            }
            DBconn.closeConn();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return flag;

    }

    @Override
    public boolean register(User user) {
        boolean flag = false;
        DBconn.init();
        int i = DBconn.addUpdDel("insert into user(name,pwd,sex,home,info) " +
                "values('" + user.getName() + "','" + user.getPwd() + "','" + user.getSex() + "','" + user.getHome() + "','" + user.getInfo() + "')");
        if (i > 0) {
            flag = true;
        }
        DBconn.closeConn();
        return flag;

    }

    @Override
    public List<User> getUserAll() {
        List<User> list = new ArrayList<User>();
        try {
            DBconn.init();
            ResultSet rs = DBconn.selectSql("select * from user");
            while (rs.next()) {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setPwd(rs.getString("pwd"));
                user.setSex(rs.getString("sex"));
                user.setHome(rs.getString("home"));
                user.setInfo(rs.getString("info"));
                list.add(user);
            }
            DBconn.closeConn();
            return list;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    public boolean delete(int id) {
        boolean flag = false;
        DBconn.init();
        String sql = "delete  from user where id=" + id;
        int i = DBconn.addUpdDel(sql);
        if (i > 0) {
            flag = true;
        }
        DBconn.closeConn();
        return flag;

    }

    @Override
    public boolean update(int id, String name, String pwd, String sex, String home, String info) {
        boolean flag = false;
        DBconn.init();
        String sql = "update user set name ='" + name
                + "' , pwd ='" + pwd
                + "' , sex ='" + sex
                + "' , home ='" + home
                + "' , info ='" + info + "' where id = " + id;
        int i = DBconn.addUpdDel(sql);
        if (i > 0) {
            flag = true;
        }
        DBconn.closeConn();
        return flag;

    }
}

2. 连接数据库 (反射)

  •        1.  Class.forName("com.mysql.jdbc.Driver");  加载驱动
  •        2.  Connection conn = DriverManager.getConnection(url,username,password); 建立连接
  •        3.  PreparedStatement ps = conn.prepareStatement(sql);  放入·sql 执行并返回结果
  •        4.  int  rs = ps.executeUpdate();  //执行增删改之后返回处理结果信息  成功或失败码 
  •         5. ResultSet rs = ps.executeQuery(sql);   执行查询之后返回处理结果(ResultSet 类型)
package demo.util;

import java.sql.*;
public class DBconn {
    static String url = "jdbc:mysql://localhost:3306/test?useunicuee=true& characterEncoding=utf8"; // 数据库连接url
    static String username = "root"; // 数据库用户名
    static String password = "123456"; // 用户密码
    static Connection conn = null; // 初始化一个数据连接 conn
    static ResultSet rs = null; // 初始化一个结果集 rs
    static PreparedStatement ps =null; // 初始化一个PreparedStatement对象 ps
    public static void init(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url,username,password);
        } catch (Exception e) {
            System.out.println("init [SQL驱动程序初始化失败!]");
            e.printStackTrace();
        }
    }
    public static int addUpdDel(String sql){
        int i = 0;
        try {
            PreparedStatement ps =  conn.prepareStatement(sql);
            i =  ps.executeUpdate();
        } catch (SQLException e) {
            System.out.println("sql数据库增删改异常");
            e.printStackTrace();
        }

        return i;
    }
    public static ResultSet selectSql(String sql){
        try {
            ps =  conn.prepareStatement(sql);
            rs =  ps.executeQuery(sql);
        } catch (SQLException e) {
            System.out.println("sql数据库查询异常");
            e.printStackTrace();
        }
        return rs;
    }
    public static void closeConn(){
        try {
            conn.close();
        } catch (SQLException e) {
            System.out.println("sql数据库关闭异常");
            e.printStackTrace();
        }
    }

}

3.servlet事件处理程序  (部分!)

        

package demo.servlet;

import demo.dao.UserDao;
import demo.dao.UserDaoImpl;
import demo.entity.User;

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


public class FindUserListServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        UserDao ud = new UserDaoImpl();
        List<User> userAll = ud.getUserAll();
        request.setAttribute("userAll", userAll);
        request.getRequestDispatcher("/userlist.jsp").forward(request, response);
    }

}
package demo.servlet;


import demo.dao.UserDao;
import demo.dao.UserDaoImpl;

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 UpdateServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String id = request.getParameter("id");
        int userId = Integer.parseInt(id);

        String name = request.getParameter("name");
        String pwd = request.getParameter("pwd");
        String sex = request.getParameter("sex");
        String home = request.getParameter("home");
        String info = request.getParameter("info");

        System.out.println("------------------------------------"+userId);

        UserDao ud = new UserDaoImpl();

        if(ud.update(userId, name, pwd, sex, home, info)){
            request.setAttribute("xiaoxi", "更新成功");
            request.getRequestDispatcher("/FindUserList").forward(request, response);
        }else{
            response.sendRedirect("index.jsp");
        }
    }

}

4.jsp页面 (部分)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <base href="<%=basePath%>">
    <title>所有用户页面</title>
</head>

<body>
<h1>${xiaoxi}</h1>
<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="${userAll}"  >
        <form action="UpdateUser" 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="DeleteUser?id=${U.id}">删除</a>  <input type="submit" value="更新"/></td>
            </tr>
        </form>
    </c:forEach>
</table>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
    <title>注册</title>
</head>
<body>
<form action="Register"method="post" style="padding-top:-700px;">
    输入用户名:<input name="name" type="text"><br><br>
    输入密码:<input name="pwd" type="password"><br><br>
    选择性别:<input type="radio"name="sex"value="男"checked>男
    <input type="radio"name="sex"value="女">女<br><br>
    选择家乡:
    <select name="home">
        <option value="上海">上海</option>
        <option value="北京" selected>北京</option>
        <option value="纽约">纽约</option>
    </select><br>
    填写个人信息:<br>
    <textarea name="info" row="5"cols="30"></textarea><br>
    <input type="reset"value="重置"><input type="submit"value="注册">
</form>

</body>
</html>

5. web.xml  (主配置包含路由  首页  过滤器等 )

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <display-name></display-name>
    <filter>
        <filter-name>EncodingFilter</filter-name>
        <filter-class>demo.filter.EncodingFilter</filter-class><!-- 全路径 从根包开始一直到类名 -->
    </filter>
    <filter-mapping>
        <filter-name>EncodingFilter</filter-name>
        <url-pattern>/*</url-pattern><!-- /* 即为过滤所有 -->
    </filter-mapping>
    <servlet><!--servlet类路径配置-->
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>demo.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>RegisterServlet</servlet-name>
        <servlet-class>demo.servlet.RegisterServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>FindUserListServlet</servlet-name>
        <servlet-class>demo.servlet.FindUserListServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>DeleteUserServlet</servlet-name>
        <servlet-class>demo.servlet.DeleteServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>UpdateUserServlet</servlet-name>
        <servlet-class>demo.servlet.UpdateServlet</servlet-class>
    </servlet>


    <servlet-mapping><!--servlet类映射配置-->
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>RegisterServlet</servlet-name>
        <url-pattern>/Register</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>FindUserListServlet</servlet-name>
        <url-pattern>/FindUserList</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>DeleteUserServlet</servlet-name>
        <url-pattern>/DeleteUser</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>UpdateUserServlet</servlet-name>
        <url-pattern>/UpdateUser</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
</web-app>

6 .总结

        jsp 负责内容的呈现

        servlet 负责前端请求事件的逻辑处理

        jdbc 连接数据库 并根据servlet传递参数进行不同的数据库操作

        wen.xml 配置请求路由  加载完成后的首页  请求响应的过滤器等

        filter  负责过滤请求和响应的参数 

        IDEA 配置 Tomcat 以及合适JDK,最后运行项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值