2014-02-18 4 views
0

Я новичок в программировании и я написал две части кода, чтобы узнать urlrewriting в сервлет:Urlrewriting с помощью сервлета

Мой HTML форма является:

<form action="loginhidden" method="get"> 
    Login ID:<input name="login" ><br> 
    Password:<input name="pass" type="password"><br> 
      <input type="submit" > 
</form> 

Мой файл web.xml является:

<web-app> 
     <servlet> 
     <servlet-name>loginhidden</servlet-name> 
     <servlet-class>loginhidden</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>loginhidden</servlet-name> 
     <url-pattern>/loginhidden</url-pattern> 
    </servlet-mapping> 

    <servlet> 
     <servlet-name>loginhidden1_name</servlet-name> 
     <servlet-class>loginhidden1_name</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>loginhidden1_name</servlet-name> 
     <url-pattern>/loginhidden1_name/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

куски кода следующим образом:

1.

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

    public class loginhidden extends HttpServlet { 
     public void doGet(HttpServletRequest req, HttpServletResponse res)throws 
     ServletException, IOException           

      { 
       res.setContentType("text/html"); 
       PrintWriter out=res.getWriter(); 
       String login= req.getParameter("login"); 
       String pass=req.getParameter("pass"); 
       if(pass.equals("admin")) 
        { 
        out.println(login); 
        out.println(pass); 
        out.println("<html><head><form action=loginhidden1_name? 
        mylogin="+login+">"); 

        out.println("Your Name:<input type=text name=myname><br>"); 
        out.println("<input type=submit>"); 
        out.println("</body></head></html>"); 
        } 

      } 


     } 

2.

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

    public class loginhidden1_name extends HttpServlet{ 
    @Override 
     public void doGet(HttpServletRequest req, HttpServletResponse res)throws 
     ServletException, IOException 

     { 
      res.setContentType("text/html"); 
      PrintWriter out=res.getWriter(); 
      out.println(req.getParameter("mylogin")); 
      out.println(req.getParameter("myname")); 
     } 
    } 

Я могу получить значение имени в моем втором сервлета (loginhidden1_name), но я не в состоянии получить значение идентификатора входа в систему («mylogin») через urlrewriting . Я получаю нулевое значение для него. Пожалуйста, помогите.

Большое спасибо в Advance.

+0

Что вы хотите? Вы хотите, чтобы в некоторых случаях управление передавалось второму сервлету? – Bill

+0

Я хочу получить значение loginid пользователя с html-страницы (формы). Получите ее в первом сервлете, а затем передайте значение через переписывание URL-адреса на второй сервлет и снова напечатайте его. Спасибо, Билл. – gallactico

ответ

0

Если вы просто хотите передать управление с одного сервлета на другой, это просто вопрос пересылки запроса другому сервлету. «Вперед» в этом случае не возвращается к клиенту.

В вашем исходном сервлете, в конце, вы захотите получить RequestDispatcher и переслать новый URL-адрес.

например.

getServletContext().getRequestDispatcher("/modified/url").forward(request, response); 

Нить управления передается другому сервлету. IIRC, вы все равно закончите вызов метода в первом сервлете. то есть он не возвращается из вашего метода, а затем вызывает другой сервлет.

Вы можете воспользоваться этим, если вам нужна почтовая обработка запроса по какой-либо причине. Хотя ServletFitler будет более подходящим способом обработки этого случая.

0

Вы не можете использовать переписывание URL-адресов в действии формы. Любые параметры после? будет удалено браузером. Вместо этого, вы можете добавить имя пользователя как скрытое поле формы в вашей второй форме:

... 
out.println("<input type=hidden name=\"mylogin\" value=\""+login+"\">"); 
... 

Это будет передаваться на ваш второй Servlet таким же образом, как и в других областях.

submitting a GET form with query string params and hidden params disappear

Смежные вопросы