英文和数字都可以查到,但是中文的话会出现查询不到或者乱码。
中文乱码或者有数据查不到数据这类问题,是因为编码不一致导致。
在jsp页面所请求的servlet页面里面加上编码转换即可
查询界面.jsp
<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<header>
<center>
<h1>新闻查询系统</h1>
</center>
</header>
欢迎用户:${user.userName}进入此系统,你的密码是:${user.password}
<section style="width: 1000px">
<div style="float: left;width: 15%">
<a href="#" target="mainFream">新闻信息发布</a><br/>
<a href="#" target="mainFrame">新闻主题新增</a><br>
<a href="/category" target="mainFrame">新闻主题查询</a><br>
<a href="/news_infor" target="mainFrame">新闻信息查询</a>
<br/>
<a href="/userList" target="mainFrame">用户查询</a>
</div>
<div>
<iframe name="mainFrame" width="80%" height="80%"></iframe>
</div>
</section>
<footer>
<center>
版权信息
</center>
</footer>
</body>
</html>
查询跳转的servlet
package com.zf.yuanruirui.dao.select;
import com.zf.yuanruirui.dao.cate.Cate;
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 java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
@WebServlet(name="select",urlPatterns = "/select")
public class select extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
String SelectName = req.getParameter("name");
String sql;
Connection connection = null;
ResultSet resultSet = null;
PreparedStatement preparedStatement = null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/web?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC","root","123456");
sql = "select * from news_category where name = ?;";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setObject(1,SelectName);
resultSet = preparedStatement.executeQuery();
List<Cate> list = new ArrayList<Cate>();
Cate cate = new Cate();
while (resultSet.next()){
int id= resultSet.getInt("id");
String name = resultSet.getString("name");
String createDate = resultSet.getString("createDate");
cate.setId(id);
cate.setName(name);
cate.setCreateDate(createDate);
list.add(cate);
}
if (cate!=null){
req.setAttribute("list",list);
req.getRequestDispatcher("cateList.jsp").forward(req,resp);
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
将编码转换成UTF-8(请求的servlet里面添加):
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
添加的对象界面代码:
package com.zf.yuanruirui.dao.cate;
public class Cate {
private int id;
private String name;
private String createDate;
public Cate(int id,String name,String createDate){
this.id = id;
this.name = name;
this.createDate = createDate;
}
public Cate() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCreateDate() {
return createDate;
}
public void setCreateDate(String createDate) {
this.createDate = createDate;
}
@Override
public String toString() {
return "Cate{" +
"id=" + id +
", name='" + name + '\'' +
", createDate=" + createDate +
'}';
}
}
显示的jsp(最后跳转的页面在,在这里我和查询的一样)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="select" method="post">
<input type="text " name="name"><input type="submit" value="查询">
</form>
<table>
<tr>
<th>编号</th>
<th>姓名</th>
<th>创建时间</th>
</tr>
<c:forEach items="${list}" var="cate">
<tr>
<th> ${cate.id}</th>
<th>${cate.name}</th>
<th> ${cate.createDate}</th>
</tr>
</c:forEach>
</table>
</body>
</html>
成功演示:
点击查询(显示查询的数据):
个人学习遇到的解决方式(方式不唯一)