当前位置: 首页 > 面试题库 >

如何使用Jersey for Java在浏览器中呈现新的.jsp文件?

孙德宇
2023-03-14
问题内容

我的站点转到登录页面,我想在用户登录时重定向到另一个页面。我有一个“ POST”方法,该方法将“用户名”和“密码”发送到服务器,服务器检查用户名和密码存在。

这是我的方法

@POST
@Path("logIn")
public void signIn(@PathParam("profileName") String profileName, @PathParam("password") String password) {
    if (profileService.getProfile(profileName) != null && (profileService.getPassword(profileName)).equals(password)){
        //Render a new page ex "feed.jsp"
    }
    else {
          //send unsucessful message back to client??

}

客户端能够正确发布用户名和密码,并检查其是否存在…我只是不知道如何使它呈现(重定向到???)一个新页面


问题答案:

你可以

重定向,(使用Response.seeOther(URI),将任何需要的值作为查询参数传递。例如

@POST
@Path("logIn")
public Response login(@Context ServletContext context) {
    UriBuilder uriBuilder = UriBuilder.fromUri(URI.create(context.getContextPath()));
    uriBuilder.path(.. <path-to-your-jsp> ..);
    uriBuilder.queryParam("key1", "value1");
    uriBuilder.queryParam("key1", "value2");
    URI uri = uriBuilder.build();

    return Response.seeOther(uri).build();
}

或者你可以..

使用Jersey的JSP
MVC功能
,并在此处清楚地演示。例如

@POST
@Path("logIn")
public Viewable login() {
    Map<String, String> model = new HashMap<>();
    model.put("key1", "value1");
    model.put("key2", "value2");

    return new Viewable("/feed", model);
}

feed.jsp

<html>
    <body>
        <p>${it.key1}</p>
        <p>${it.key2}</p>
    </body>
</html>

另外: 您是否 真的 要在URI路径中传递密码?会带来巨大的安全风险。最好在请求正文中传递它。

更新

现在,我考虑了一下,您应该始终按照POST / REDIRECT /
GET
模式从登录POST
重定向。如果要在整个方法中使用JSP
MVC,则可以让控制器返回Viewable登录页面的GET(在GET上),并在成功返回POST的情况下,重定向到Feed控制器,否则重定向回同一登录页面(得到)。有几种不同的解决方案。

例如

@Path("/login")
public class LoginController {

    @GET
    public Viewable loginPage() {
        ...
        return new Viewable("/login", model);  // to login.jsp
    }

    @POST
    public Response loginPost(Form form, @Context UriInfo uriInfo) {
        ...
        UriBuilder builder = uriInfo.getBaseUriBuilder();
        if (success) {
            builder.path("/feed");  // to FeedController GET
        } else {
            builder.path("/login"); // to LoginController GET
        }

        return Response.seeOther(builder.build()).build();
    }
}

@Path("/feed")
public class FeedController {

    @GET
    public Viewable getFeed() {
        ...
        return new Viewable("/feed", model);  // to feed.jsp
    }   
}


 类似资料:
  • 问题内容: 我已经成功完成了在浏览器中而不是“打开/保存”对话框中显示PDF文件的代码。现在,我一直试图在浏览器中显示Word文档。我想在Firefox,IE7+,Chrome等中显示Word文档。 有人可以帮忙吗?在浏览器中显示Word文档时,总是会出现“打开/保存”对话框。我想使用JavaScript实现此功能。 问题答案: 目前没有浏览器具有呈现Word文档所必需的代码,据我所知,当前也没有

  • 使用DRF,我有一个用户模型,其中包括一个地址字段,这是一个文本字段。当我在API浏览器中查看UserList终结点时,地址如下所示: 从文档中,我认为我需要在序列化程序中使用以下内容: ...但这并没有解决问题。PhoneNumberField类型字段也会发生同样的情况: 我在序列化程序中将它们重新定义为CharField。 更新: 我的模型和序列化程序比通常要复杂一些,因为我将地址、国家和三个

  • 有人能给出在“https://network.axial.net/a/company/business-team-san-francisco/”这样的网站上使用JSoup的正确方法吗?

  • 问题内容: 我需要一个命令行工具(或Javascript / PHP,但我认为命令行是一种方式)来进行渲染并获取URL的渲染内容,但是重要的是我不仅要渲染CSS / Html / images,还要渲染Javascript。 例如,诸如“ renderengine http://www.google.es outputfile.html”之类的命令和网络内容(已解析的html和javascript

  • Localhost很好,但上传到服务器时不工作 %pdf-1.3 1 0 obj<>Endobj2 0 obj<>Endobj3 0 obj<>>/Mediabox[0.000 0.000 595.280 841.890]>>Endobj4 0 obj<>stream x 2 300 p@&b m-l l,br b 5 jr k drr f b k endstream endobj 8 0 obj