在我的其中一个资源中,我通过会话响应将JSON对象传递给JSP页面。在响应中阻止URL编码
@POST
@Path("/updateUser")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response userProfile(
@Context UriInfo uriInfo, String updateProfileData,
@Context HttpServletRequest req
) throws JSONException, UnsupportedEncodingException {
String session = req.getSession(true).getId();
JSONObject jsOb = new JSONObject(updateProfileData);
JSONArray jaArr = jsOb.getJSONArray("profileData");
JSONObject a;
StringBuilder sbv = new StringBuilder();
StringBuilder sbk = new StringBuilder();
String prefix = "";
try {
conn = DaoMessenger.PostGresCon().getConnection();
for (int i = 0; i < jaArr.length();) {
JSONObject jsonObject = jaArr.getJSONObject(i);
Iterator<String> keys = jsonObject.keys();
while (keys.hasNext()) {
String key = keys.next();
Object value = jsonObject.get(key);
sbk.append(prefix);
sbv.append(prefix);
prefix = ",";
sbv.append("'").append(value).append("'");
sbk.append(key);
}
query = conn.prepareStatement("INSERT INTO addresses (" + sbk.toString() + ") values (" + sbv.toString() + ")");
System.out.println("QUERY: " + query);
rs = query.executeUpdate();
System.out.println("RS: " + rs);
i++;
System.out.println("rowsUpdated: " + rs);
}
} catch (Exception e){
e.printStackTrace();
}
if (rs > 0) {
System.out.println("SUCCESS");
URI uri;
uri = uriInfo.getBaseUriBuilder()
.path("../home/index.jsp?page/#/home")
.queryParam("obj", URLEncoder.encode(updateProfileData, "UTF-8"))
.build();
return Response.seeOther(uri).build();
} else {
System.out.println("STUCK SOMEWHERE");
URI uri = uriInfo.getBaseUriBuilder()
.path("/messenger/home/index.jsp?page/#/error;" + req.getSession(true).getId()).build();
return Response.seeOther(uri).build();
}
}
,但我一直面临
404错误
的URL被编码和路径了。 所以:?
变为:%3F
和#
变为:
而不是%23
:http://localhost:8080/messenger/home/index.jsp?page/#/home
我得到:http://localhost:8080/messenger/home/index.jsp%3Fpage/%23/home
第二个是不是为我工作,并导致404错误。我通过谷歌搜索尝试了几个解决方案,但都没有帮助。
如何在将响应发送到JSP页面后强制这样保持路径的原始字符?
你可以把它回来URLDecoder.decode的URL重定向到浏览器之前解码 – mhasan
你能[编辑]你的问题你如何展现”在对客户端的响应中包含构造的URI? – Kenster
@mhasan:我试了一下,但没有成功 –