`
amigobot
  • 浏览: 5038 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spring MVC, Security集成Rest, Applet

阅读更多

前段时间开发一个系统,基于Spring MVC开发的,安全由Spring Security控制。后来由于要支持Ajax, Applet, 需要添加远程访问,于是添加了对Rest的支持,返回Json对象。中间遇到了不少问题,简单列一下,希望对其他人也有帮助。

 

1. 系统报406错误,按照文档和其他人的经验,只要<mvc:annotation-driven/>,应该不需要任何配置

 

最后发现原因是已经显式的配置了一个AnnotationMethodHandlerAdapter bean,这是就必须配置里面的messageConverters, 自动配置就不生效了。

 

2. 如何使Rest和JSP共享Controller

controller虽然很thin,但还是有一些简单的代码的。Spring ContentNegotiatingViewResolver可以支持自动对返回内容做处理,按需返回。观点貌似很好,使用就比较麻烦了。一点是JSP View接受的是一个Model对象,如果这个对象返回给Rest客户端,Model也会打包到JSon,感觉Json处理Map还是很麻烦的,于是自己生产一个CustomMappingJacksonJsonView,单独过滤掉Model,当然前提是Model只含有一个对象。

 

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="mediaTypes">
            <map>
                <entry key="html" value="text/html"/>
                <entry key="json" value="application/json"/>
            </map>
        </property>
        <property name="viewResolvers">
            <list>
                <bean id="tilesViewResolver"
                      class="org.springframework.web.servlet.view.UrlBasedViewResolver"
                      p:viewClass="org.springframework.web.servlet.view.tiles2.TilesView"/>

                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="prefix" value="/WEB-INF/views/"/>
                    <property name="suffix" value=".jsp"/>
                </bean>

            </list>
        </property>
        <property name="defaultViews">
            <list>
                <bean class="test.json.CustomMappingJacksonJsonView"/>
            </list>
        </property>
    </bean>

 3. 安全访问控制

因为系统有applet,所以对applet的Rest接口访问也应该和Web访问一下,做安全控制。因为applet是网页的一部分,让用户重新登录是不能接受的,实际上用户根本不知道有applet的存在。解决办法是,把web的session id 在applet初始化的时候,通过javascript传给applet, 在所有Rest调用时,都添加JSESSIONID的Cookie Header。

HttpPost postRequest = new HttpPost(url);
postRequest.setHeader("Cookie", "JSESSIONID=" + jSessionId);

这样spring security的配置就只要考虑url,而不需要管远程是Ajax, Applet,还是浏览器了。

0
0
分享到:
评论

相关推荐

    Spring MVC概述

    - **Spring ORM**:提供与常用对象/关系映射框架(如Hibernate、JPA等)的集成支持,简化数据持久化操作。 通过以上介绍,我们可以看出Spring MVC不仅是一种强大的Web应用框架,也是Spring框架整体的一部分,利用...

    Applet整合到web环境

    在Web环境中集成Applet,可以使网页具备更丰富的动态效果和用户界面。本文将深入探讨如何将Applet整合到Web环境,以及解决IE浏览器报找不到类错误的问题。 首先,我们需要理解Applet的生命周期,它包括初始化、加载...

    applet与servlet通讯

    在构建多层网络应用时,Java Applet 和 Servlet 常常被一起使用。Applet 提供了构建强大、动态的界面到应用程序的便捷方法,而 Servlet 则为我们提供了高效处理 Web 或应用服务器请求的方式。Sun 的应用编程模型推荐...

    在 Web 应用程序中集成 Applet.mht

    在 Web 应用程序中集成 Applet.

    家庭理财系统(java+applet).rar

    本文将深入探讨一个基于Java和Applet技术,结合Spring、Hibernate以及Struts(SSH)和Spring MVC、Spring、MyBatis(SSM)框架的家庭理财系统项目。这个项目对于初学者来说,不仅提供了实践的机会,也是一个学习现代...

    Applet

    Java Applet是Java技术在早期为了实现网页动态交互而提出的一种技术。Applet是一段用Java语言编写的代码,能够在用户的浏览器环境下运行,为用户提供动态的、交互式的Web内容。与传统的Java Application不同,Applet...

    java 开发指南_applet和jsp篇

    在实际应用中,JSP常与Servlet、MVC框架(如Spring MVC)、Java EE的其他服务(如EJB、JDBC)等一起使用,构建企业级的Web应用。对于Java开发者来说,熟练掌握JSP的开发技巧,包括创建动态页面、处理用户请求、管理...

    Spring in Action,ThirdEdition 英文第三版

    Spring还支持Spring Web Flow等流程管理技术,以及Spring Security等安全性管理组件。 #### 五、Spring与其他系统的集成 - **远程服务**:Spring提供了与远程服务进行交互的能力,如使用HTTP、RMI等协议调用远程...

    Applet小游戏 Applet小游戏 Applet小游戏

    Applet是Java类的子类,通常是`java.applet.Applet`或其子类,如`javax.swing.JApplet`。它们通过`&lt;applet&gt;`标签或者`&lt;object&gt;`标签在HTML页面中被引用,从而在客户端(用户的浏览器)中执行。Applet的生命週期包括...

    jasperreports-applet-5.1.0.jar

    2. **安全配置**:确保applet的安全策略文件(security.policy)设置得当,防止权限滥用。 3. **兼容性测试**:在不同浏览器和操作系统上进行充分的测试,确保applet的稳定性和兼容性。 总结,JasperReports ...

    JDK工具appletviewer详解

    - `-J&lt;option&gt;`:传递Java虚拟机选项,如`-J-Djava.security.policy=security.policy`指定安全策略文件。 总结来说,appletviewer是Java开发中不可或缺的工具,它使得开发者能够独立于Web环境测试和调试Applet。...

    java的applet实例

    Java的Applet实例是Java编程领域中的一个基础概念,它主要涉及到Web应用程序的早期开发技术。Applet是一种在客户端浏览器中运行的小型Java程序,它能够增强网页的交互性,提供动态内容展示。在Java的发展历程中,...

    JAVA spring 的介绍.docx

    3. **小应用程序**:Spring 的轻量级特性使其非常适合用于开发小型应用程序,如 Applet。 #### 五、Spring 的优势 1. **减少代码量**:Spring 提供了许多开箱即用的功能,如事务管理、异常处理等,减少了开发过程...

    applet下载操作及权限问题

    - **签名与权限请求**:如果Applet需要进行文件操作,必须先进行数字签名,然后在代码中使用`java.security.SecurityPermission`请求相应的权限。用户在弹出的安全警告对话框中确认后,Applet才能执行相应操作。 4...

    javac命令以及appletviewer命令使用

    对于初学者或者习惯于使用集成开发环境(IDE)的人来说,了解如何手动使用这些命令非常有必要。 **1. javac命令基本介绍** javac是Java编译器,用于将Java源代码转换为字节码文件。其语法格式如下: ``` javac ...

    java applet实例讲解

    Java Applet是Java技术在早期Web开发中的一种应用方式,它允许开发者创建可以在浏览器中运行的小型程序。本文将深入讲解Java Applet的概念、工作原理以及如何通过实例进行学习。 一、Java Applet概述 Java Applet是...

    Java Applet 入门教程

    Java Applet 是一种基于Java平台的小程序,它可以在支持Java的Web浏览器中运行,为用户提供交互式的用户体验。在20世纪90年代中期,Java Applet是互联网上动态内容的一种流行方式,允许开发者创建可嵌入网页的动态...

Global site tag (gtag.js) - Google Analytics