java url重写带参数_Servlet URL重写带参数

本文介绍了Java中URL重写带参数的相关知识。阐述了URL重写时参数名称/值对的发送格式,以及从Servlet获取参数值的方法。还分析了URL重写的优缺点,并给出使用链接维护用户状态的示例,包含项目创建及重要文件代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

http://localhost/myappurl?key1=value1&key2=value2&??...

使用=符号分隔名称和值,使用&符号将参数名/值对与其他参数分开。当用户单击超链接时,参数名称/值对将被传递到服务器。 从Servlet中可以使用getParameter()方法获取指定参数的值。

0dfe52068128bfe552f0d4cad0f9e375.png

网址重写的优点

无论Cookie是否被禁用(浏览器无关),它将始终有效。

每个页页不需要额外的表单提交。

URL重写的缺点

它只能在链接上工作。

它只能发送文本信息。

使用URL重写的示例

在这个例子中,我们使用链接来维护用户的状态。为此,在查询字符串中附加用户的名称,并从另一页面的查询字符串中获取该值。

打开Eclipse,创建一个动态Web项目:UrlRewriting,其完整的结构如下所示 -

下面是此项目中几个重要的文件代码。

文件:index.html

URL重写

名字:

value="提交" />

文件:FirstServlet.java

package com.yiibai;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* Servlet implementation class FirstServlet

*/

public class FirstServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse

* response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// TODO Auto-generated method stub

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

String n = request.getParameter("username");

out.print("您好, " + n + "


");

// appending the username in the query string

out.print("使用URL参数访问用户名");

out.close();

}

}

文件:SecondServlet.java

package com.yiibai;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* Servlet implementation class FirstServlet

*/

@WebServlet("/FirstServlet")

public class SecondServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

//getting value from the query string

String n=request.getParameter("uname");

out.print("Hello "+n);

out.close();

}

}

文件:web.xml

xmlns="http://xmlns.jcp.org/xml/ns/javaee"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

id="WebApp_ID" version="3.1">

UrlRewriting

index.html

index.jsp

s1

com.yiibai.FirstServlet

s1

/servlet1

s2

com.yiibai.SecondServlet

s2

/servlet2

在编写上面代码后,部署此Web应用程序,打开浏览器访问URL: http://localhost:8080/UrlRewriting ,如果没有错误,应该会看到以下结果 -

c3eb5c4c2127972965e45d3579f473bd.png

填写用户名后点击提交表单,应该会看到以下结果 -

617876a857fde4215e6ff11c5e157615.png

注意: 在URL中,附加了参数”username=maxsu” 来区别用户。

再次点击“使用URL参数访问用户名”链接,看到显示的用户名:maxsu -

606814eefb61bc76cfb12fcbbf944b85.png

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值