Использование формы jsp для отправки строки сервлету - использование setAttribute в jsp и getAttribute в сервлете
Я экспериментирую с отправкой данных из формы jsp, вызовом сервлета и отображением этих данных в сервлете.
Я хотел бы использовать setAttribute и getAttribute.
В этом файле JSP я использую setAttribute:
<HTML>
<HEAD>
<TITLE>
Multi Processor
</TITLE>
</HEAD>
<BODY>
<h4>This is a form submitted via POST:</h4>
<FORM action = "/MyWebArchive/MulitProcessorServlet" method = "POST">
Enter your name: <INPUT type="TEXT" name="name"/>
<BR/>
<INPUT type="submit"/>
</FORM>
<BR/>
<h4>This is a form submitted via GET:</h4>
<FORM action = "/Week05WebArchive/MulitProcessorServlet">
Enter your name: <INPUT type="TEXT" name="name"/>
<BR/>
<INPUT type="submit"/>
</FORM>
</BODY>
<%
String strMasjidLocation = "Selimiyie Masjid Methuen";
session.setAttribute("MasjidLocation", strMasjidLocation);
%>
</HTML>
Это сервлет, который я хотел бы использовать getAttribute, но я не знаю, как использовать GetAttribute. Можете ли вы показать мне, какой дополнительный код мне нужно добавить в сервлет, чтобы я мог получить значение из setAttribute?
package temp22;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class MulitProcessorServlet
*/
public class MulitProcessorServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
doPost(req, res);
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
String name = req.getParameter("name");
StringBuffer page = new StringBuffer();
String methodWhoMadeTheCall = req.getMethod();
String localeUsed = req.getLocale().toString();
String strMasjidLocation = null;
//strMasjidLocation = this is where I would like to capture the value from the jsp that called this servlet.
page.append("<HTML><HEAD><TITLE>Multi Form</TITLE></HEAD>");
page.append("<BODY>");
page.append("Hello " + name + "!");
page.append("<BR>");
page.append("The method who called me is: " + methodWhoMadeTheCall);
page.append("<BR>");
page.append("The language used is: " + localeUsed);
page.append("<BR>");
page.append("I am at this location: " + strMasjidLocation);
page.append("</BODY></HTML>");
res.setContentType("text/html");
PrintWriter writer = res.getWriter();
writer.println(page.toString());
writer.close();
}
}
4 ответа
Это должно работать: String value = (String) req.getSession(false).getAttribute("MasjidLocation")
Не используйте скриптлеты; это стиль 1999 года. Изучите JSTL и напишите свои JSP, используя это.
Ваши сервлеты никогда не должны включать в себя HTML. Просто проверьте и свяжите параметры, передайте их сервисам для обработки и поместите объекты ответа в область запроса или сеанса для отображения JSP.
Вы использовали сеанс, а не запрос. вам может понадобиться получить сеанс из запроса.
String strMasjidLocation = request.getSession().getAttribute("MasjidLocation");
Я согласен с Duffymo в том, что вы должны учиться новым технологиям (если это применимо, возможно, ваш клиент не может этого допустить...). В любом случае, чтобы получить значение атрибута, который вы должны сделать:
strMasjidLocation = (String)req.getSession().getAttribute("MasjidLocation");
Кроме того, я заметил, что у вас есть два разных пути для ваших сервлетов в ваших тегах