Сделал простейший сервлет LoginServlet, который генерит страничку, куда пользователь добавляет свое имя. По сабмиту делаю редирект на html-страничку view.htm. К url-у странички добавляю параметр - имя пользователя. На view.htm извлекаю имя при помощи javascript. Если имя в латинице (допустим, Wasya), параметр передается прекрасно (в адресной строке браузера вижу http://localhost:8080/view.htm?userName=Wasya). А если в кирилице (Вася), то параметр не добавляется совсем (в адресной строке браузера вижу http://localhost:8080/view.htm?userName=) Как это исправить? Привожу код: LoginServlet.java:| Код | package app;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;
public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("utf8"); PrintWriter pw = response.getWriter(); pw.println("<html><head><title>Ввод</title>" + "<meta http-equiv='Content-Type' content='text/html; " + "charset=utf-8'/></head>"); pw.println("<form action='login.do' method='post'>Введите имя:" + "<input type='text' name='name'>" + "<input type='submit' value='Войти'>"); pw.println("</form></body></html>"); }
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String name = request.getParameter("name"); if (name != null || !"".equals(name)) { response.setCharacterEncoding("UTF-8"); response.sendRedirect(response.encodeRedirectURL("view.htm?userName=" + name)); } } }
|
view.htm:| Код | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>title</title> <script language="JavaScript" type="text/javascript"> function getRequestParam(name) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regexS = "[\\?&]" + name + "=([^&#]*)"; var regex = new RegExp(regexS); var results = regex.exec(window.location.href); if (results == null) return ""; else return results[1]; } </script> </head> <body> <script language="JavaScript" type="text/javascript"> document.write(getRequestParam("userName")); </script> </body> </html>
|
web.xml:| Код | <?xml version="1.0" encoding="UTF-8"?> <web-app 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" version="3.0"> <welcome-file-list> <welcome-file>login.do</welcome-file> </welcome-file-list> <servlet> <servlet-name>loginServlet</servlet-name> <servlet-class>app.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>loginServlet</servlet-name> <url-pattern>/login.do</url-pattern> </servlet-mapping> </web-app>
|
Спасибо за помощь! |