所用软件:
1 myeclipse
2 mysql数据库
3 dbutils连接数据库
4 bootstrap前段框架
5 EL表达式+JSTL标签库
6 c3p0连接池


过滤器(filter)解决全站的字符乱码问题


添加书籍入页面:
这里写图片描述


查询书籍页面:
这里写图片描述


修改书籍界面:(注意要回显所要修改图书的数据)
这里写图片描述


工程目录:
这里写图片描述


这里写图片描述


bookServlet如下:

package com.hai.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.hai.dao.bookDao;
import com.hai.domain.book;
import com.hai.utils.WebUtils;

public class bookServlet extends HttpServlet {

    public bookServlet() {
        super();
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String type = request.getParameter("type");
        if (type.equalsIgnoreCase("charu")) {
            charu(request, response);
        } else if (type.equalsIgnoreCase("chaxun")) {
            chaxun(request, response);
        } else if (type.equalsIgnoreCase("shan")) {
            shanchu(request, response);
        } else if (type.equalsIgnoreCase("xiu01")) {
            xiugai01(request, response);
        } else if (type.equalsIgnoreCase("xiu02")) {
            xiugai02(request, response);
        }
    }

    private void xiugai02(HttpServletRequest request,   //修改图书
            HttpServletResponse response) {
        String id = request.getParameter("id");
        String bookname = request.getParameter("bookname");
        String author = request.getParameter("author");
        String age = request.getParameter("age");
        book shu = new book();
        shu.setId(id);
        shu.setBooknamee(bookname);
        shu.setAuthorr(author);
        shu.setAgee(Integer.parseInt(age));
        bookDao mm=new bookDao();
        mm.xiugai(shu);
        try {
            response.getWriter().write("修改完毕!!!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void xiugai01(HttpServletRequest request,  //用于回显该图书的数据
            HttpServletResponse response) {
        String id = request.getParameter("id");
        bookDao mmBookDao = new bookDao();
        book shu = mmBookDao.chaxun(id);
        request.setAttribute("book", shu);
        try {
            request.getRequestDispatcher("/WEB-INF/xiugai.jsp").forward(
                    request, response);
        } catch (ServletException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private void shanchu(HttpServletRequest request,  //删除图书
            HttpServletResponse response) {
        String id = request.getParameter("id");
        bookDao mm = new bookDao();
        mm.shanchu(id);
        List<book> listt = mm.chaxun();
        request.setAttribute("listt", listt);
        try {
            request.getRequestDispatcher("/chaxun.jsp").forward(request,
                    response);
        } catch (ServletException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private void chaxun(HttpServletRequest request, HttpServletResponse response) {  //图书查询
        bookDao mm = new bookDao();
        List<book> listt = mm.chaxun();
        request.setAttribute("listt", listt);
        try {
            request.getRequestDispatcher("/chaxun.jsp").forward(request,
                    response);
        } catch (ServletException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private void charu(HttpServletRequest request, HttpServletResponse response) {  //添加图书
        String bookname = request.getParameter("bookname");
        String author = request.getParameter("author");
        String age = request.getParameter("age");
        book shu = new book();
        shu.setId(WebUtils.makeID());
        shu.setBooknamee(bookname);
        shu.setAuthorr(author);
        shu.setAgee(Integer.parseInt(age));
        bookDao mm = new bookDao();
        mm.charu(shu);
        try {
            response.getWriter().write("cha ru wan bi");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

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

}


dao对象:

package com.hai.dao;

import java.awt.print.Book;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.hai.domain.book;
import com.hai.utils.JdbcUtils;

public class bookDao {

      public void charu(book book){  //添加一本书
            try{
                QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
                String sql = "insert into book(id,booknamee,authorr,agee) values(?,?,?,?)";
                Object params[] = {book.getId(),book.getBooknamee(),book.getAuthorr(),book.getAgee()};
                runner.update(sql, params);
            }catch (Exception e) {
                throw new RuntimeException(e);
            }
        }


      public void xiugai(book book){//修改某本书  
            try{
                QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
                String sql = "update book set booknamee=?,authorr=?,agee=? where id=? ";
                Object params[] = {book.getBooknamee(),book.getAuthorr(),book.getAgee(),book.getId()};
                runner.update(sql, params);
            }catch (Exception e) {
                throw new RuntimeException(e);
            }
        }

      public void shanchu(String id){ //删除具体ID所对应的图书
            try{
                QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
                String sql = "delete from book where id=?";          
                runner.update(sql, id);
            }catch (Exception e) {
                throw new RuntimeException(e);
            }
        }

      public List<book> chaxun(){  //查询所有图书
            try{
                QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
                String sql = "select * from book";

              List<book> listt=  (List<book>) runner.query(sql, new BeanListHandler(book.class));
              return listt;
            }catch (Exception e) {
                throw new RuntimeException(e);
            }
        }

      public book chaxun(String id){  //查询具体ID所对应的书
            try{
                QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
                String sql = "select * from book where id=?";

              book shu= (book) runner.query(sql,id,new BeanHandler(book.class));
              return shu;
            }catch (Exception e) {
                throw new RuntimeException(e);
            }
        }     
}


封装book的数据实体(domain):

package com.hai.domain;

public class book {
    private String id;
private String  booknamee;
private String  authorr;
private int agee;
public String getBooknamee() {
    return booknamee;
}
public void setBooknamee(String booknamee) {
    this.booknamee = booknamee;
}
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public String getAuthorr() {
    return authorr;
}
public void setAuthorr(String authorr) {
    this.authorr = authorr;
}
public int getAgee() {
    return agee;
}
public void setAgee(int agee) {
    this.agee = agee;
}

}

解决全站字符编码的过滤器:

package com.hai.filters;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
import java.util.Enumeration;
import java.util.Locale;
import java.util.Map;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

//为解决全站乱码
public class character implements Filter {

    public void destroy() {
        // TODO Auto-generated method stub

    }

    public void doFilter(ServletRequest req, ServletResponse resp,
            FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        MyCharacterEncodingRequest requestWrapper = new MyCharacterEncodingRequest(
                request);
        chain.doFilter(requestWrapper, response);

    }

    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub

    }
}

/*
 * 1.实现与被增强对象相同的接口 2、定义一个变量记住被增强对象 3、定义一个构造器,接收被增强对象 4、覆盖需要增强的方法
 * 5、对于不想增强的方法,直接调用被增强对象(目标对象)的方法
 */

class MyCharacterEncodingRequest extends HttpServletRequestWrapper {

    private HttpServletRequest request;

    public MyCharacterEncodingRequest(HttpServletRequest request) {
        super(request);
        this.request = request;
    }

    @Override
    public String getParameter(String name) {

        try {
            String value = this.request.getParameter(name);
            if (value == null) {
                return null;
            }

            if (!this.request.getMethod().equalsIgnoreCase("get")) {
                return value;
            }

            value = new String(value.getBytes("ISO8859-1"),
                    this.request.getCharacterEncoding());
            return value;

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>
  <filter>
  <filter-name>haitao</filter-name>
  <filter-class>com.hai.filters.character</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>haitao</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>bookServlet</servlet-name>
    <servlet-class>com.hai.servlet.bookServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>bookServlet</servlet-name>
    <url-pattern>/servlet/bookServlet</url-pattern>
  </servlet-mapping>    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


提供连接池的工具类:

package com.hai.utils;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JdbcUtils {
    private static DataSource ds = null;
    static{
        ds = new ComboPooledDataSource();
    }

    public static DataSource getDataSource(){
        return ds;
    }

    public static Connection getConnection() throws SQLException{
        return ds.getConnection();
    }
}


UUID字符串类:

package com.hai.utils;

import java.util.UUID;

public class WebUtils {

    public static String makeID(){
        return UUID.randomUUID().toString();
    }
}


c3p0-config.xml 如下:

<?xml version="1.0" encoding="UTF-8"?>


<c3p0-config>
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/xuhaitao</property>
        <property name="user">root</property>
        <property name="password">root</property>

        <property name="acquireIncrement">5</property>
        <property name="initialPoolSize">10</property>
        <property name="minPoolSize">5</property>
        <property name="maxPoolSize">20</property>


    </default-config>

    <named-config name="flx">
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/day16</property>
        <property name="user">root</property>
        <property name="password">root</property>
        <property name="acquireIncrement">50</property>
        <property name="initialPoolSize">100</property>
        <property name="minPoolSize">50</property>
        <property name="maxPoolSize">1000</property><!-- intergalactoApp adopts a different approach to configuring statement caching -->
    </named-config>

</c3p0-config>

charu.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>


<title>My JSP 'charu.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/style.min.css">
<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
</head>

<body class="container">
    <form method="post"
        action="${pageContext.request.contextPath}/servlet/bookServlet?type=charu">
        <div class="form-group">
            <label class="control-label">书名:</label> <input type="text"
                class="form-control" name="bookname" />
        </div>
        <div class="form-group">
            <label class="control-label">作者:</label> <input type="text"
                class="form-control" name="author" />
        </div>
        <div class="form-group">
            <label class="control-label">年龄:</label> <input type="text"
                class="form-control" name="age" />
        </div>
        <div class="form-group">
            <input type="submit" value="提交" class="btn btn-primary" />
        </div>
    </form>
</body>
</html>


chaxun.jsp


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'chaxun.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet"
    href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
<script
    src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script
    src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<style type="text/css">
td{
  vertical-align: middle !important;
}
</style>
</head>

<body class="container">
    <table class="table">
        <tr>
            <td style="padding:30px;">书名</td>
            <td style="padding:30px;">作者</td>
            <td style="padding:30px;">年龄</td>
            <td style="padding:30px;" align="left">操作</td>
        </tr>
        <c:forEach var="mm" items="${listt }">
            <tr>
                <td style="padding:30px;">${mm.booknamee }</td>
                <td style="padding:30px;">${mm.authorr}</td>
                <td style="padding:30px;">${mm.agee }</td>
                <td align="left" style="padding-left:25px;"><a class="btn btn-primary btn-sm" href="${pageContext.request.contextPath}/servlet/bookServlet?type=shan&id=${mm.id}">删除</a><br>
                <a style="margin-top:5px;" class="btn btn-primary btn-sm" href="${pageContext.request.contextPath}/servlet/bookServlet?type=xiu01&id=${mm.id}"">修改</a>
                </td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>


xiugai.jsp如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>


    <title>My JSP 'xiugai.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
<link rel="stylesheet"
    href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
<script
    src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
<script
    src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  </head>

  <body class="container">
 <form method="post"
        action="${pageContext.request.contextPath}/servlet/bookServlet?type=xiu02&id=${book.id}">
        <div class="form-group">
            <label class="control-label">书名:</label> <input type="text"
                class="form-control" name="bookname"  value="${book.booknamee }"/>
        </div>
        <div class="form-group">
            <label class="control-label">作者:</label> <input type="text"
                class="form-control" name="author" value="${book.authorr }" />
        </div>
        <div class="form-group">
            <label class="control-label">年龄:</label> <input type="text"
                class="form-control" name="age" value="${book.agee }"/>
        </div>
        <div class="form-group">
            <input type="submit" value="提交" class="btn btn-primary" />
        </div>
    </form>
  </body>
</html>

FR:海涛高软(QQ技术交流群:386476712)

Logo

更多推荐