Здесь вы уже объявили тип String, но вы также приведете его к типу String, это избыточно.
<% String s = (String)request.getAttribute("name");
out.println(s);
%>
Также есть разница между <%= %>
и <% %>
.Если вы хотите вывести переменную в ваш jsp, используйте ту, которая равна (<%= %>
).Вторая строка вашего кода скриптлета также выдаст ошибку.Код, который вы пишете в своем сервлете, не просто продолжается в JSP, это не то, как он работает.
если вы хотите вывести атрибут name, просто сделайте следующее:
<%= request.getAttribute("name") %>
Однако, начиная с 2010 года, скриптлеты не приветствуются (устаревшая технология). Вместо этого мы используем EL и JSTL.Вы должны иметь возможность просто вывести переменную следующим образом:
${name}
В вашем сервлете все, что вам нужно сделать, это:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = "Jane"; //create a string
request.setAttribute("name", name); //set it to the request
RequestDispatcher rs = request.getRequestDispatcher("index.jsp"); //the page you want to send your value
rs.forward(request,response); //forward it
}
РЕДАКТИРОВАТЬ
Вы спросили,
Есть ли способ вызвать сервлет, скажем, одним нажатием кнопки или что-то в этом роде?
Да, естьЕсть несколько способов сделать это, и это действительно зависит от того, как вы хотите его настроить.Вот простой способ запуска сервлета по нажатию кнопки.* (Предполагается, что сервлет сопоставлен с /Testing
):
<a href="/Testing">Trigger Servlet<a>
Другой способ может быть с формой:
<form action="Testing" method="get">
<input type="hidden" name="someParameterName" value="you can send values like this">
<button type="submit">Do some magic</button>
</form>
Существует также AJAX (который включает в себя javascript).Но это довольно сложный процесс, и я не рекомендую делать это, пока вы не ознакомитесь с нормальным синхронным http поведением.