我的主页面中有一个iframe和一个文本框(用于输入所需的网址),因此当用户输入所需的网址时,我会将请求的网页加载到iframe。
我正在使用HttpServlet
来处理通过doGet
的请求。我需要区分所请求的内容类型,因为如果它是一个文件(img或脚本)我只是读它并返回,但如果它是一个html页面,我做了一些修改。
我尝试在request.getContentType()
内使用doGet
,但它返回null
。有没有办法做到这一点?谢谢
答案 0 :(得分:3)
HttpServletRequest#getContentType()
会返回Content-Type
标头的值(如果有)。
您需要在发送请求时指定它。您可以使用Javascript来执行此操作。
或者,但理想情况下,您可以使用查询字符串参数来提示内容类型。
这是获取请求正文的内容类型。
如果要指定响应应包含的内容,则需要使用适当的媒体类型指定Accept
标头。
您也可以进行URL扩展匹配。例如,www.host.com/some/path.xml
将返回XML。
答案 1 :(得分:1)
如果您的请求正文包含数据,request.getContentType()
方法只会返回一个值。由于这是一个GET,它不包含任何身体。如果您有任何数据,它可以是URL的一部分,也可以是附加到URL的查询字符串。在GET请求中声明Content-type
是没有意义的,因此没有要读取的标头。
您必须在请求网址中查找所需的数据。
如果是由链接或图片生成的网址,请从网址获取名称和扩展名。
它由脚本生成,它可能在其他地方有这些信息,例如查询字符串中的某些变量(例如?file-name=xyz&file-type=png
)或额外的路径信息(例如/servlet/xyz/jpeg
)。这取决于客户端如何请求数据。
答案 2 :(得分:0)
您是否想知道请求的内容类型,您不知道请求检查您的URL的mabye。如果您的请求不包含任何数据,则request.getContentType
应返回空值。您可以在响应而不是请求时执行此操作。 Mabye你可以通过参数来定义你想要的响应。我认为你必须检查响应类型以确定应用程序的行为取决于响应类型而不是请求。简单的GET请求只等待响应。并根据该响应做一些行动。