gpt4 book ai didi

java - Jersey Rest web 服务重定向到同一页面

转载 作者:行者123 更新时间:2023-11-30 08:18:09 25 4
gpt4 key购买 nike

我有一个简单的 rest 网络服务,将用于加载页面。加载页面后,将显示同一页面,并显示确认消息或错误消息。

我使用下面的代码加载它....

jsp页面:-

<form action="rest/file/upload" method="post"
enctype="multipart/form-data">

<br> <label>Username: &nbsp&nbsp&nbsp</label><input type="text"
placeholder="Username" name="username"> <br> <br>
<label>Password:&nbsp&nbsp&nbsp&nbsp&nbsp</label><input type="text"
placeholder="Password" name="password"> <br> <br>

<hr>
<p>
Select a file : <input type="file" name="file" size="45" />
</p>
<br> <input id="submit" type="submit" value="Upload" />
<c:out value="${obj}" />
<!-- ${obj} -->
</form>

Controller

@Path("/file")
public class FileUploadService {
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Viewable uploadFile(
@Context HttpServletRequest request,@Context HttpServletResponse response,
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail,
@FormDataParam("username") String username,
@FormDataParam("password") String password) throws NoSuchAlgorithmException, IOException, URISyntaxException {


response.setHeader("Location", "/");

return new Viewable("/index.jsp",null);

网络.xml

<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>

单击表单后,文件将被加载并返回到 index.jsp 页面,但页面的位置已设置为。 RESTFileUpload 是程序名称。

http://localhost:8080/RESTFileUpload/rest/

但我希望它是

http://localhost:8080/RESTFileUpload/

最佳答案

我对 Jersey 的 MVC 功能知之甚少(或者真的一无所知),但另一种选择是只使用重定向。您可以简单地使用 Response.seeOther(URI) .这将发出 "303 See Other"带有 Location header 。浏览器应该为这个页面发送另一个请求。该方法可能类似于

public Response getRedirect(@Context ServletContext context) {
UriBuilder builder = UriBuilder.fromPath(context.getContextPath());
builder.path("index.jsp");
return Response.seeOther(builder.build()).build();
}

这将重定向到 /contextPath/index.jsp(或者换句话说,位于 webapp 根目录中的 index.jsp 路径)

顺便说一句,如果您完全熟悉 Javascript/jQuery,还有其他 file upload options不涉及重定向。


更新

只是为了证明这工作正常

@Path("/redirect")
public class RedirectResource {
@GET
public Response getRedirect(@Context ServletContext context) {
UriBuilder builder = UriBuilder.fromPath(context.getContextPath());
builder.path("index.html");
return Response.seeOther(builder.build()).build();

}
}

enter image description here

关于java - Jersey Rest web 服务重定向到同一页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27728476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com