📜  Servlet中的URL重写

📅  最后修改于: 2021-01-09 12:44:02             🧑  作者: Mango

3)URL重写

在URL重写中,我们将标记或标识符附加到下一个Servlet或下一个资源的URL。我们可以使用以下格式发送参数名称/值对:

url?name1 = value1&name2 = value2&??

名称和值使用等号分隔,参数名称/值对与另一个参数使用&符号分隔。当用户单击超链接时,参数名称/值对将被传递到服务器。在Servlet中,我们可以使用getParameter()方法来获取参数值。

URL重写的优势

  • 无论是否禁用cookie(与浏览器无关),它将始终有效。
  • 不需要在每个页面上提交额外的表单。

URL重写的缺点

  • 它仅适用于链接。
  • 它只能发送文本信息。

使用URL重写的示例

在此示例中,我们使用链接维护用户的状态。为此,我们将用户名附加在查询字符串,并从另一页的查询字符串中获取值。

index.html


Name:

FirstServlet.java


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


public class FirstServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response){
        try{

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        
        String n=request.getParameter("userName");
        out.print("Welcome "+n);

        //appending the username in the query string
        out.print("visit");
                
        out.close();

                }catch(Exception e){System.out.println(e);}
    }

}

SecondServlet.java


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

public class SecondServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
        try{

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        
        //getting value from the query string
        String n=request.getParameter("uname");
        out.print("Hello "+n);

        out.close();

                }catch(Exception e){System.out.println(e);}
    }
    

}

web.xml





s1
FirstServlet



s1
/servlet1



s2
SecondServlet



s2
/servlet2