2012-04-26 6 views
3

Я экспериментирую с отправкой данных из формы jsp и вызовом сервлета и показом этих данных в сервлет.Использование формы jsp для отправки строки в сервлет - использование setAttribute в jsp и getAttribute в сервлете

Я хотел бы использовать 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(); 
} 
} 
+1

Спасибо всем за такие быстрые ответы и помощь. :-) –

ответ

4

Это должно работать: значение String = (String) req.getSession (ложь) .getAttribute ("MasjidLocation")

3

Не используйте скриптлеты; это стиль 1999 года. Изучите JSTL и напишите свои JSP, используя это.

Ваши сервлеты никогда не должны иметь встроенный HTML-код. Просто проверьте и привяжите параметры, передайте их службам для обработки и поместите объекты ответа в область запроса или сеанса для отображения JSP.

+1

Спасибо за быстрый ответ. По крайней мере, на данный момент я хотел бы доказать, что могу использовать setAttribute и getAttribute, а затем, когда это работает, я могу перейти к тому, что вы предлагаете, чтобы я мог видеть все различные способы, которыми это можно сделать. –

2

Я согласен с duffymo, что вы должны учиться на более новой технологии (если это применимо, возможно, ваш клиент не может этого допускать). В любом случае, чтобы получить значение атрибута owuld сделать:

strMasjidLocation = (String)req.getSession().getAttribute("MasjidLocation"); 

Кроме того, я заметил, у вас есть два различных пути для вашего сервлета в форму HTML <> теги:

MyWebArchive/MulitProcessorServlet 

и

Week05WebArchive/MulitProcessorServlet 

Ожидается?

2

Вы использовали сеанс не запрос. вам может потребоваться получить Сессию по запросу.

String strMasjidLocation = request.getSession().getAttribute("MasjidLocation");