老师,乱码问题,改了半天也不行。麻烦老师帮看下

老师,乱码问题,改了半天也不行。麻烦老师帮看下

<%@ 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>
	
	<form action="/JDBCAndJSP/add" method="get">
	<h2>课程添加</h2>
		<table>
			
			<tr>
				<td>课程名称:<input type="text" name="name"></td>
			</tr>
			<tr>
				<td>所属方向:<input type="text" name="category"></td>
			</tr>
			<tr>
				<td>课程描述:<input type="text" name="scrp"></td>
			</tr>
			
			<tr><td><input type="submit" value="添加"></td></tr>
		</table>
	</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!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>

	<table>
		<tr>
			<td style="font-size:30px">课程名称</td>
			<td style="font-size:30px">所属方向</td>
			<td style="font-size:30px">课程描述</td>
			<td style="font-size:30px">创建时间</td>
		</tr>
		<c:forEach var="course" items="${courses }" varStatus="ind">
			<tr>
				
				<td>${course.name }</td>
				<td>${course.category }</td>
				<td>${course.desp }</td>
				<td><fmt:formatDate value="${course.createTime }" pattern="hh小时mm分钟ss秒"></fmt:formatDate></td>
			</tr>
		</c:forEach>
	</table>
</body>
</html>
package com.imooc.servlet;

import java.io.IOException;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;


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 Utils.JDBCUtials;
import dto.Dto;

/**
 * Servlet implementation class addServlet
 */
@WebServlet("/add")
public class addServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public addServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String name = request.getParameter("name");
		String category = request.getParameter("category");
		String desp = request.getParameter("scrp");
		
		System.out.println(name);
		System.out.println(category);
		System.out.println(desp);

		Dto dto = new Dto();
		boolean flag = dto.add(name, category, desp);
		if (flag) {
			response.sendRedirect("/JDBCAndJSP/show");
		} else {
			System.out.println("添加失败了");
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
package com.imooc.servlet;

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

import javax.servlet.ServletContext;
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 dto.Dto;
import entity.Course;

/**
 * Servlet implementation class ShowServlet
 */
@WebServlet("/show")
public class ShowServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ShowServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
	
		ServletContext context = request.getServletContext();
		if (context.getAttribute("courses") == null) {
			Dto dto = new Dto();
			List<Course>courses = new ArrayList<>();	
			courses = dto.show();
			for (Course c : courses) {
				System.out.println(c.getId());
				System.out.println(c.getName());
				System.out.println(c.getCategory());
				System.out.println(c.getCreateTime());
				System.out.println(c.getDesp());

			}
			context.setAttribute("courses", courses);
			
		}
		request.getRequestDispatcher("showCourse.jsp").forward(request, response);
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

下边是工具类

package jdbcutils;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCUtils {
	
	private static final String driver;
	private static final String url;
	private static final String user;
	private static final String password;

	static {
		Properties prop = new Properties();
		try {
			InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("driver.properties");
			prop.load(is);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		driver=prop.getProperty("driver");
		url = prop.getProperty("url");
		user = prop.getProperty("username");
		password = prop.getProperty("password");
	
		
	}
	
	
	//注册驱动
	public static void driverLoad() throws ClassNotFoundException {
		Class.forName(driver);
	}
	//获取连接
	public static Connection getConnection (Connection conn) throws Exception {
		driverLoad();
		conn = DriverManager.getConnection(url, user, password);
		return conn;
	}
	//释放资源
	public static void release(Connection conn, Statement stmt) {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		conn = null;
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			};
		}
		stmt = null;
	}

	public static void release(Connection conn, Statement stmt, ResultSet rs) {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		conn = null;
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			};
		}
		stmt = null;
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		rs = null;
	}

}


下边是工具类的配置文件driver.properties

root=root
password=123456
url=jdbc:mysql://127.0.0.1:3306/jdbcdemo?useSSL=false&serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf-8
driver=com.mysql.cj.jdbc.Driver

下边是course类

package entity;

import java.util.Date;

public class Course {
	private Integer id;
	private String name;
	private String category;
	private String desp;
	private Date createTime;
	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 getCategory() {
		return category;
	}
	public void setCategory(String category) {
		this.category = category;
	}
	public String getDesp() {
		return desp;
	}
	public void setDesp(String desp) {
		this.desp = desp;
	}
	public Date getCreateTime() {
		return createTime;
	}
	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}
	public Course(Integer id, String name, String category, String desp, Date createTime) {
		super();
		this.id = id;
		this.name = name;
		this.category = category;
		this.desp = desp;
		this.createTime = createTime;
	}
	public Course() {
		
	}
	

}

我是tomcat7 我把tomcat/conf/server.xml文件尾部也加上了URIEncoding="UTF-8"

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

但是还是不行

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 冲哥_ 2018-12-12 11:08:36

解决了老师,我开始使用了过滤器,但是还是不行。最后我把doGet换成了doPost成功了。

我已经把tomcat下的server.xml 中的<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />这句话加上了URIEncoding="UTF-8",但是doGet还是不行。

我推测是我jdk和tomcat不匹配的原因。我是jdk8而tomcat是7.0.


  • 恩恩,解决就好,tomcat7是有编码问题的,还是推荐同学使用tomcat8,因为tomcat8已经解决了编码问题。祝学习愉快~
    2018-12-12 11:20:57
  • 提问者 冲哥_ 回复 chrismorgen #2
    好,麻烦老师了
    2018-12-12 11:39:29
提问者 冲哥_ 2018-12-11 20:15:54

控制的输入的也是乱码

  • 建议同学根据之前所学的知识设置一下字符编码过滤器来解决传参时遇到的乱码问题。祝学习愉快~
    2018-12-12 09:43:16
  • 提问者 冲哥_ 回复 chrismorgen #2
    好,我试试
    2018-12-12 09:44:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师