Ошибка кодировки в html/JSP Java Servlets
Изучая Сервлеты решил попробовать создать JSP файл, куда будут передаваться параметры и выводить их в виде html страницы
Однако возникает ошибка в кодировке русских букв, несмотря на то, что указал везде кодировку UTF-8. Ниже будут приведены коды и скриншоты: UPD: Добавил html-файл
XML файл:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>WebApp</display-name>
<welcome-file-list>
<welcome-file>Login.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>My</servlet-name>
<servlet-class>ru.unlimit.MyServlet</servlet-class>
<init-param>
<param-name>message</param-name>
<param-value>Hello to Me</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>My</servlet-name>
<url-pattern>/MyUrl</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>JSPfile</servlet-name>
<jsp-file>/JSPfile.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>JSPfile</servlet-name>
<url-pattern>/hello-world-jsp</url-pattern>
</servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/404.html</location>
</error-page>
<jsp-config>
<jsp-property-group>
<url-pattern>/Info.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
</web-app>
html файл
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Login</h1>
<form action = "LoginServlet" method = "POST">
Name : <input name = "username"/>
<br><br>
Password : <input name = "password" type="password">
<br><br>
<select name = "status">
<option value = "Студент">Студент</option>
<option value = "Профессор">Профессор</option>
<option value = "Рабочий">Рабочий</option>
</select>
<br><br>
Gender: <input type="radio" name="gender" value="female"/>Female
<input type="radio" name="gender" value="male" checked />Male
<br><br>
Java Technoligies:
<br>
<input type = "checkbox" name = "courses" value = "Java SE"> Java SE
<input type = "checkbox" name = "courses" value = "Java EE"> Java EE
<input type = "checkbox" name = "courses" value = "Java FX"> Java FX
<input type = "checkbox" name = "courses" value = "Java Spring"> Java Spring
<input type = "checkbox" name = "courses" value = "JDBC"> JDBC
<br><br>
<input type = "submit" value = "Submit"/>
</form>
</body>
</html>
Сервлет LogIn:
package ru.login;
import java.io.IOException;
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 javax.servlet.http.HttpSession;
import ru.unlimit.User;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
String status = request.getParameter("status");
System.out.println("status " + status);
String gender = request.getParameter("gender");
String[] courses = request.getParameterValues("courses");
String path;
if(username != null && password != null) {
path = "/Info.jsp";
request.setAttribute("username", username);
request.setAttribute("password", password);
request.setAttribute("status", status);
request.setAttribute("gender", gender);
request.setAttribute("courses", courses);
System.out.println("Entered");
request.setCharacterEncoding("UTF-8");
getServletContext().getRequestDispatcher(path).forward(request, response);
}
else {
System.out.println("Uncorrect LogIn");
path = "/Login.html";
getServletContext().getRequestDispatcher(path).forward(request, response);
}
}
}
и сам JSP файл:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang = "ru">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Информация</h1>
<p>username: ${username}</p>
<p>user password: ${password}</p>
<p>Status: ${status}</p>
</body>
</html>
И, соответственно, при воспроизведении JSP файла(точнее html) некорректно отображаются русские символы
Помогите, пожалуйста, разобраться в чем ошибка
Спасибо
Ответы (1 шт):
Автор решения: teoretik_eugene
→ Ссылка
Перед тем как получать данные
String username = request.getParameter("username");
String password = request.getParameter("password");
и т.д. необходимо изменить кодировку запроса, а именно:
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
