Перенаправление / отправка на исходный jsp после использования сервлета перевода

Я реализую функцию автоматического перевода всех моих страниц JSP на французский или английский. У пользователя будет две кнопки в каждый момент навигации, чтобы изменить язык. Я использовал сервлет, чтобы справиться с этим изменением языка, но я не знаю, как автоматически перенаправлять на нужную страницу JSP каждый раз, когда этот сервлет вызывается. Вероятно, это тривиально, но я не могу понять, как это сделать, поэтому, пожалуйста, помогите мне ...

Я создал файл JSP только для хранения заголовка, который будет использоваться почти во всех других моих JSP, чтобы предлагать пользователям услуги перевода:

В header.jsp:

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<div id="settings">
        <p><fmt:message key="connection"/><c:out value=" ${sessionScope.firstname} ${sessionScope.name}"></c:out> <a href="../../disconnect"><fmt:message key = "disconnect"/></a></p>
        <p id="translateText"><fmt:message key="translation"/> :
            <a href="../../language?lang=fr" onclick=""><img src="../css/images/icone_fr.gif" alt="Français"></a>
            <a href="../../language?lang=en" onclick=""><img src="../css/images/icone_en.gif" alt="English"></a>   
        </p>
</div>

</html>

Затем я включаю этот jsp во все другие файлы JSP, которые используют эти функции перевода (например, example.jsp):

example.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<!doctype html>
<html>


<!-- To initialize the language of the page -->
<c:set var="language" value="${not empty sessionScope.language ? sessionScope.language : not empty language ? language : pageContext.request.locale}" scope="session" />
<fmt:setLocale value="${language}" />


<c:choose>
    <c:when test="${language=='fr'}"><fmt:setBundle basename="translation/message_fr"/></c:when>
    <c:otherwise><fmt:setBundle basename="translation/message_en"/></c:otherwise>
</c:choose>

<head>
<meta charset="utf-8" />
<title><fmt:message key="platform"/>!</title>
<link rel="stylesheet" href="../css/styles.css" type="text/css" media="screen" />
<link rel="stylesheet" type="../text/css" href="css/print.css" media="print" />
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js">     </script><![endif]-->
</head>
<body>
 <div id="wrapper"><!-- #wrapper -->


<%@ include file = "header.jsp" %>


<section id="main"><!-- #main content and sidebar area -->


        <section id="content"><!-- #content -->
            <h1><fmt:message key="newProject"/></h1>

                    <article>
                <p>blabla</p>
            </article>
                    </section>
  </section>
</div><!-- #wrapper -->

</body>
</html>

Когда пользователь щелкает ссылку в «header.jsp» для изменения языка, вызывается сервлет «Language» и изменяет значение параметра языка в sessionScope. Это работает правильно, но тогда мой сервлет должен перенаправить (переслать?) Ответ на исходный JSP, чтобы он отображался снова, но на правильном языке, и это то, что у меня не работает.

У меня вопрос: как мне найти или передать этот URL-адрес JSP? Я пробовал request.getRequestURI (), но он возвращает URI сервлета, а не JSP, отправляющий запрос.

Вот мой сервлет:

/**
 * Servlet implementation class Language
 */
@WebServlet("/language")
public class Language extends HttpServlet {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public Language() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String lang = request.getParameter("lang");
    HttpSession session = request.getSession();
    session.setAttribute("language", lang);
    System.out.println(request.getRequestURI());//give the servlet URI

    response.sendRedirect(//where ??????);

}

}

Заранее спасибо за вашу помощь!


person Coralie    schedule 30.05.2012    source источник


Ответы (1)


вы можете использовать response.sendRedirect (.jsp? language = 'urlangaue'). так что теперь управление переходит к соответствующему jsp, затем вы повторно опрашиваете langaue, используя request.parameter ("langauge");

person 12345    schedule 15.02.2013