Filter處理中文亂碼
package 過濾器;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
@WebFilter("/*")
public class MycourseCourseFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
response.setContentType("text/html;charset=utf-8");
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
數據庫連接池
package 數據庫連接池;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class ConnectionUtils {
private static DataSource dataSource = null;
static {
try {
Properties properties = new Properties();
InputStream inStream = ConnectionUtils.class.getClassLoader().getResourceAsStream("db.properties");
properties.load(inStream);
dataSource = BasicDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
public static DataSource getConnection() {
return dataSource;
}
}
課程信息javabean
course
package 圖書信息javabean;
import java.io.Serializable;
public class Course implements Serializable {
private Integer id;
private String name;
private String desc;
private double price;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "Book [id=" + id + ", name=" + name + ", desc=" + desc + ", price=" + price + "]";
}
}
mycourse
package 圖書信息javabean;
import java.io.Serializable;
import java.util.List;
public class Mycourse implements Serializable {
private Integer id;
private Integer bookId;
private Integer count;
private Course book;
public Course getBook() {
return book;
}
public void setBook(Course book) {
this.book = book;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getBookId() {
return bookId;
}
public void setBookId(Integer bookId) {
this.bookId = bookId;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
@Override
public String toString() {
return "Bar [id=" + id + ", bookId=" + bookId + ", count=" + count + "]";
}
}
coursedao
package dao;
import java.sql.SQLException;
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 圖書信息javabean.Course;
import 數據庫連接池.ConnectionUtils;
public class CourseDao {
public List<Course> findAll() {
QueryRunner runner = new QueryRunner(ConnectionUtils.getConnection());
String sql = "select *from book";
System.out.println("=============================================");
try {
return runner.query(sql, new BeanListHandler<Course>(Course.class));
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
public Course findById(Integer id) {
QueryRunner runner = new QueryRunner(ConnectionUtils.getConnection());
String sql = "select *from book where id=?";
System.out.println("=============================================");
try {
return runner.query(sql, new BeanHandler<Course>(Course.class), id);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}
**`package dao;
import java.sql.SQLException;
import java.util.ArrayList;
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 圖書信息javabean.Mycourse;
import 圖書信息javabean.Course;
import 數據庫連接池.ConnectionUtils;
public class MycourseDao {
public List findAll() {
QueryRunner runner = new QueryRunner(ConnectionUtils.getConnection());
String sql = “select * from car”;
try {
return runner.query(sql, new BeanListHandler(Mycourse.class));
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
public Integer saveCar(Mycourse bar) {
QueryRunner runner = new QueryRunner(ConnectionUtils.getConnection());
String sql = "insert into car(bookId, count)values(?, ?)";
try {
return runner.update(sql, bar.getBookId(), bar.getCount());
} catch (SQLException e) {
e.printStackTrace();
return 0;
}
}
public Integer updateCar(Mycourse bar) {
QueryRunner runner = new QueryRunner(ConnectionUtils.getConnection());
String sql = "update car set bookId=?, count=? where id=?";
try {
return runner.update(sql, bar.getBookId(), bar.getCount(), bar.getId());
} catch (SQLException e) {
e.printStackTrace();
return 0;
}
}
public Mycourse findByBookId(Integer id) {
QueryRunner runner = new QueryRunner(ConnectionUtils.getConnection());
String sql = "select *from car where bookId=?";
try {
Mycourse bar = runner.query(sql, new BeanHandler<Mycourse>(Mycourse.class), id);
return bar;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
}
`**
servlet
CourseServlet
package Servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.CourseDao;
import 圖書信息javabean.Course;
@WebServlet(value = "/CourseServlet")
public class CourseServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
CourseDao bookDao = new CourseDao();
List<Course> books = bookDao.findAll();
// System.out.println(books);
request.setAttribute("bookList", books);
request.getRequestDispatcher("/WEB-INF/course.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
DownloadServlet`
package Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.file.Files;
import java.nio.file.Paths;
@WebServlet("/download")
public class DownloadServlet extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 設置響應數據的 MIME 類型
resp.setContentType("application/x-msdownload");
// 獲取文件名稱
String fileName = req.getParameter("fileName");
// 判斷瀏覽器是否是 IE
String userAgent = req.getHeader("User-Agent");
if (userAgent.contains("MSIE")) {
// IE
// 設置文件的名稱
resp.setHeader("Content-Disposition", "attachment; fileName="
+ URLEncoder.encode(fileName, "UTF-8"));
} else {
// 非IE
resp.setHeader("Content-Disposition", "attachment; fileName="
+ new String(fileName.getBytes("UTF-8"), "ISO-8859-1"));
}
// 獲取文件所在的路徑
String path = req.getServletContext().getRealPath("/WEB-INF/download");
// 獲取指定的文件對象
File f = new File(path, fileName);
ServletOutputStream out = resp.getOutputStream();
// 將文件複製到輸出流中,響應給瀏覽器
Files.copy(Paths.get(f.getAbsolutePath()), out);
}
}
MycourseServlet
package Servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.MycourseDao;
import dao.CourseDao;
import 圖書信息javabean.Mycourse;
import 圖書信息javabean.Course;
@WebServlet("/MycourseServlet")
public class MycourseServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (request.getParameter("id") == null) {
this.showCar(request, response);
return;
}
Integer para_id = Integer.parseInt(request.getParameter("id"));
System.out.println(para_id);
CourseDao bookDao = new CourseDao();
Course hasBook = bookDao.findById(para_id);
System.out.println(hasBook);
if (hasBook == null) {
request.getRequestDispatcher("/BookServlet").forward(request, response);
} else {
MycourseDao carDao = new MycourseDao();
Mycourse car = carDao.findByBookId(para_id);
if (car == null) {
car = new Mycourse();
car.setBookId(para_id);
car.setCount(1);
carDao.saveCar(car);
} else {
car.setCount(car.getCount() + 1);
carDao.updateCar(car);
}
System.out.println(car);
this.showCar(request, response);
return;
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
private void showCar(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
CourseDao bookDao = new CourseDao();
MycourseDao carDao = new MycourseDao();
List<Mycourse> bars = carDao.findAll();
System.out.println(bars);
for (Mycourse b : bars) {
Course book = bookDao.findById(b.getBookId());
book.setPrice(book.getPrice() * b.getCount());
b.setBook(book);
}
request.setAttribute("barList", bars);
request.getRequestDispatcher("/WEB-INF/mycourse.jsp").forward(request, response);
}
}
db.properties
注意密碼(我的爲空)
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db
username=root
password=
course.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>課程管理模塊</title>
</head>
<body style="text-align:center;">
<h2>學生選課表</h2>
<table width="80%" border="3" align="center">
<tr>
<td>課程代碼</td>
<td>課程名稱</td>
<td>課時</td>
<td>學生操作</td>
</tr>
<c:forEach items="${ bookList }" var="book">
<tr>
<td>${ book.name }</td>
<td>${ book.desc }</td>
<td>${ book.price }</td>
<font color="green">
<td><a href="MycourseServlet?id=${ book.id }">
<font color="red">我要選課</font>
</a></td>
</font>
</tr>
</c:forEach>
</table>
           
           
           
           
           
<a href="MycourseServlet">
<a href="MycourseServlet"><font color="green">點擊查看已選課程</a>
</body>
</html>
mycourse.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>我的選課表</title>
</head>
<body style="text-align:center;">
<h2>已選課程</h2>
<table width="80%" border="5" align="center">
<tr>
<td>課程名</td>
<td>總課時</td>
<td>已選學生人數</td>
</tr>
<c:forEach items="${ barList }" var="car">
<tr>
<td>${ car.book.name }</td>
<td>${ car.book.price }</td>
<td>${ car.count }</td>
</tr>
</c:forEach>
</table>
           
           
           
           
       
<a href="CourseServlet"><font color="green">點擊返回選課列表</a>
<a href="download.jsp"><font color="green">點擊下載選課表</a>
</body>
</html>
download.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="download?fileName=test.png"}>點擊下載課程表</a>
</body>
</html>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>書城主界面</title>
</head>
<body>
//跳轉到商品頁面ShowServlet
<jsp:forward page="CourseServlet"></jsp:forward>
</body>
</html>