Jersey Rest webservice redirecting to the same page(Jersey Rest web 服务重定向到同一页面)
问题描述
I have a simple rest webservice that will be used to load a page. Once the page is loaded the same page will be displayed with a confirmation msg or error msg being displayed.
Im using the using the below code to load it ....
jsp page:-
<form action="rest/file/upload" method="post"
    enctype="multipart/form-data">
    <br> <label>Username:    </label><input type="text"
        placeholder="Username" name="username"> <br> <br>
    <label>Password:     </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);
web.xml
<servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
Once I click the form the file is loaded and it takes back to the index.jsp page, but the location of the page is set to. RESTFileUpload is the program name.
http://localhost:8080/RESTFileUpload/rest/
but I want it to be
http://localhost:8080/RESTFileUpload/
I don't know much (or really anything) about the MVC features Jersey, but another option is to just use a redirect. You can simply use Response.seeOther(URI). This will send out a "303 See Other" with the Location header. The browser should send another request for this page. The method might look something like
public Response getRedirect(@Context ServletContext context) {
    UriBuilder builder = UriBuilder.fromPath(context.getContextPath());
    builder.path("index.jsp");
    return Response.seeOther(builder.build()).build();       
}
This will redirect to /contextPath/index.jsp (or in other words the index.jsp path located in the webapp root)
As an aside, if you are familiar with Javascript/jQuery at all, there are other file upload options that don't involve the redirect.
UPDATE
Just to show that this works fine
@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();
    }
}
                        这篇关于Jersey Rest web 服务重定向到同一页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Jersey Rest web 服务重定向到同一页面
				
        
 
            
        - Java包名称中单词分隔符的约定是什么? 2022-01-01
 - value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
 - Eclipse 插件更新错误日志在哪里? 2022-01-01
 - 从 finally 块返回时 Java 的奇怪行为 2022-01-01
 - Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
 - C++ 和 Java 进程之间的共享内存 2022-01-01
 - Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
 - Jersey REST 客户端:发布多部分数据 2022-01-01
 - 将log4j 1.2配置转换为log4j 2配置 2022-01-01
 - 如何使用WebFilter实现授权头检查 2022-01-01
 
						
						
						
						
						