java url 加密和隐藏域

来源:互联网 发布:手机淘宝 买家中心 编辑:程序博客网 时间:2024/04/30 14:30

某游戏连接,以前一直是死敌!
发生了很多很多,嗯 很多!
现在忽然发现了一个很有趣的东西
http://221.130.15.57:8091/p?p_E/2035847_4d8b002b_bccc45a6/
连接加密,过滤器搞定
但是
扩展名有木有!有木有?

RESTful URL

就是设计url的时候要满足REST标准,REST标准。。。好难说明白,
可以参考http://baike.baidu.com/view/1077487.htm?fr=ala0_1


spring 现在真不好说以后会臃肿成神马东西???? 简明啊简明


由于下一版本的rapid-framwork需要集成spring RESTful URL,所以研究了一下怎么搭建. 并碰到了一下问题。


springmvc 3.0 中增加 RESTful URL功能,构造出类似javaeye现在的URL。 rest介绍 , 这里还有struts2 rest构造的一篇文章: 使用 Struts 2 开发 RESTful 服务

简单例子如下,比如如下URL

Java代码
/blog/1   HTTP GET =>     得到id = 1的blog   
/blog/1   HTTP DELETE => 删除 id = 1的blog   
/blog/1   HTTP PUT   =>    更新id = 1的blog   
/blog      HTTP POST =>    新增BLOG  

/blog/1  HTTP GET =>    得到id = 1的blog
/blog/1  HTTP DELETE => 删除 id = 1的blog
/blog/1  HTTP PUT  =>   更新id = 1的blog
/blog     HTTP POST =>   新增BLOG


以下详细解一下spring rest使用.


首先,我们带着如下三个问题查看本文。
1. 如何在java构造没有扩展名的RESTful url,如 /forms/1,而不是 /forms/1.do

2. 由于我们要构造没有扩展名的url本来是处理静态资源的容器映射的,现在被我们的spring占用了,冲突怎么解决?
3. 浏览器的form标签不支持提交delete,put请求,如何曲线解决?


springmvc rest 实现

springmvc的resturl是通过@RequestMapping 及@PathVariable annotation提供的,通过如@RequestMapping(value="/blog/{id}",method=RequestMethod.DELETE)即可处理/blog/1 的delete请求.

Java代码
@RequestMapping(value="/blog/{id}",method=RequestMethod.DELETE)   
public ModelAndView delete(@PathVariable Long id,HttpServletRequest request,HttpServletResponse response) {   
     blogManager.removeById(id);   
    return new ModelAndView(LIST_ACTION);   
}  

@RequestMapping(value="/blog/{id}",method=RequestMethod.DELETE)
public ModelAndView delete(@PathVariable Long id,HttpServletRequest request,HttpServletResponse response) {
 blogManager.removeById(id);
 return new ModelAndView(LIST_ACTION);
}

@RequestMapping @PathVariable如果URL中带参数,则配合使用,如

Java代码
@RequestMapping(value="/blog/{blogId}/message/{msgId}",method=RequestMethod.DELETE)   
public ModelAndView delete(@PathVariable("blogId") Long blogId,@PathVariable("msgId") Long msgId,HttpServletRequest request,HttpServletResponse response) {   
}  

@RequestMapping(value="/blog/{blogId}/message/{msgId}",method=RequestMethod.DELETE)
public ModelAndView delete(@PathVariable("blogId") Long blogId,@PathVariable("msgId") Long msgId,HttpServletRequest request,HttpServletResponse response) {
}

spring rest配置指南
1. springmvc web.xml配置

Xml代码
<!-- 该servlet为tomcat,jetty等容器提供,将静态资源映射从/改为/static/目录,如原来访问 http://localhost/foo.css ,现在http://localhost/static/foo.css -->  
<servlet-mapping>  
    <servlet-name>default</servlet-name>  
    <url-pattern>/static/*</url-pattern>  
</servlet-mapping>  
<servlet>  
    <servlet-name>springmvc</servlet-name>  
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    <load-on-startup>1</load-on-startup>  
</servlet>  
  
<!-- URL重写filter,用于将访问静态资源http://localhost/foo.css 转为http://localhost/static/foo.css -->  
<filter>  
    <filter-name>UrlRewriteFilter</filter-name>  
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>  
    <init-param>  
            <param-name>confReloadCheckInterval</param-name>  
            <param-value>60</param-value>  
        </init-param>  
    <init-param>  
                <param-name>logLevel</param-name>  
                <param-value>DEBUG</param-value>  
        </init-param>        
</filter>  
<filter-mapping>  
    <filter-name>UrlRewriteFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
</filter-mapping>  
  
<!-- 覆盖default servlet的/, springmvc servlet将处理原来处理静态资源的映射 -->  
<servlet-mapping>  
    <servlet-name>springmvc</servlet-name>  
    <url-pattern>/</url-pattern>  
</servlet-mapping>  
  
<!-- 浏览器不支持put,delete等method,由该filter将/blog?_method=delete转换为标准的http delete方法 -->  
<filter>  
    <filter-name>HiddenHttpMethodFilter</filter-name>  
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>  
</filter>  
  
<filter-mapping>  
    <filter-name>HiddenHttpMethodFilter</filter-name>  
    <servlet-name>springmvc</servlet-name>  
</filter-mapping>  

<!-- 该servlet为tomcat,jetty等容器提供,将静态资源映射从/改为/static/目录,如原来访问 http://localhost/foo.css ,现在http://localhost/static/foo.css -->
 <servlet-mapping>
  <servlet-name>default</servlet-name>
  <url-pattern>/static/*</url-pattern>
 </servlet-mapping>
 <servlet>
     <servlet-name>springmvc</servlet-name>
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <load-on-startup>1</load-on-startup>
 </servlet>
 
 <!-- URL重写filter,用于将访问静态资源http://localhost/foo.css 转为http://localhost/static/foo.css -->
 <filter>
  <filter-name>UrlRewriteFilter</filter-name>
  <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
  <init-param>
       <param-name>confReloadCheckInterval</param-name>
       <param-value>60</param-value>
      </init-param>
  <init-param>
              <param-name>logLevel</param-name>
              <param-value>DEBUG</param-value>
         </init-param>    
 </filter>
 <filter-mapping>
  <filter-name>UrlRewriteFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 
 <!-- 覆盖default servlet的/, springmvc servlet将处理原来处理静态资源的映射 -->
 <servlet-mapping>
     <servlet-name>springmvc</servlet-name>
     <url-pattern>/</url-pattern>
 </servlet-mapping>
 
 <!-- 浏览器不支持put,delete等method,由该filter将/blog?_method=delete转换为标准的http delete方法 -->
 <filter>
  <filter-name>HiddenHttpMethodFilter</filter-name>
  <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
 </filter>
 
 <filter-mapping>
  <filter-name>HiddenHttpMethodFilter</filter-name>
  <servlet-name>springmvc</servlet-name>
 </filter-mapping>


2. webapp/WEB-INF/springmvc-servlet.xml配置,使用如下两个class激活@RequestMapping annotation

Java代码
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>   
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>  

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

完整配置

Java代码
<beans default-autowire="byName"    >   
  
     <!-- 自动搜索@Controller标注的类 -->   
     <context:component-scan base-package="com.**.controller"/>   
       
     <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>   
  
     <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>   
  
     <!-- Default ViewResolver -->   
     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">   
         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>   
         <property name="prefix" value="/pages"/>   
         <property name="suffix" value=".jsp"></property>   
     </bean>   
       
     <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" p:basename="i18n/messages"/>   
  
     <!-- Mapping exception to the handler view -->   
     <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">   
         <!-- to /commons/error.jsp -->   
         <property name="defaultErrorView" value="/commons/error"/>   
         <property name="exceptionMappings">   
             <props>   
             </props>   
         </property>   
     </bean>   
           
</beans>  


=========================

感觉就动态加密挺有用 这个扩展名保护。。。。。

Tomcat resin 忙的时候都会出消息

嗨愚蠢的庶民啊 !!! 貌似没用 呵呵