V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nilrust
V2EX  ›  程序员

还是看不懂 Java web 啊!

  •  
  •   nilrust · 2018-09-13 14:11:29 +08:00 · 3327 次点击
    这是一个创建于 2043 天前的主题,其中的信息可能已经有所发展或是发生改变。

    跟着这个例子 https://spring.io/guides/gs/accessing-data-mysql/ 尝试了下 spring 感觉很简单啊,也就依赖注入时要加 @XXX 标签稍微麻烦点,不能像 Symfony 那样根据类名直接自动注入,我算是入门了吧,自信感觉 “教练,我要打十个!”

    然鹅,当我打开一个朋友丢给我维护的 java 项目,我还是看不懂啊,尤其是 mybatis 这种 xml 里面混杂着 sql 拼接的奇葩!不用注解路由,用 servlet-mapping 匹配路由我也忍了,但其实还套了一层 thrift 调用本项目的类方法,实际是通过.thrift 文件来作为路由~~~,

    当然业务代码纯 java 还是简单又老土的, 比如用户鉴权用 aspect 鉴权对方法调用。

    14 条回复    2018-09-14 09:43:41 +08:00
    night98
        1
    night98  
       2018-09-13 14:19:56 +08:00 via Android
    tiny 了解一下,我已经吐血了
    w292614191
        2
    w292614191  
       2018-09-13 14:59:51 +08:00
    你为什么觉得奇葩呢?是你“见多识广”吗?
    nilrust
        3
    nilrust  
    OP
       2018-09-13 15:05:55 +08:00
    @w292614191

    不奇葩吗,直接拼接,这种不用 prepared statement 就不怕 SQL 注入?

    https://i.loli.net/2018/09/13/5b9a0c38585aa.png
    micean
        4
    micean  
       2018-09-13 15:08:43 +08:00
    @nilrust

    mybatis 的中${xxxx}才会有 sql 注入……
    whx20202
        5
    whx20202  
       2018-09-13 15:09:15 +08:00
    如果你无聊,有时间,我建议可以了解一下 JOOQ,这个挺好用的
    whx20202
        6
    whx20202  
       2018-09-13 15:10:44 +08:00
    另外注入点,据我所知,where 里面的可以用变量占位符。后面的 order by limit xxx 这种注入点,是没办法的。这种情况可以用白名单(枚举类也算白名单),或者强制类型转换
    lurenw
        7
    lurenw  
       2018-09-13 15:12:27 +08:00
    @nilrust
    你能想到的,mybatis 早想到了,#本来就防注入了
    linpf
        8
    linpf  
       2018-09-13 15:13:34 +08:00
    我最近也在学习 JAVA Web。越看越觉得不习惯。真是想感叹,做 WEB 好好的用 PHP 不好嘛。

    JAVA 就好好的做后端服务做 API 就好了,WEB 层面用 JAVA,就像开着挖掘机上高速。不是不能用,但是真难受。

    不过也无奈,毕竟绝大多数程序员,用什么语言做项目,是自己说了不算的~~
    nilrust
        9
    nilrust  
    OP
       2018-09-13 15:22:52 +08:00
    @micean
    @lurenw

    嗯 不会注入,但是这种 sql 混入看着难不难受?
    sampeng
        10
    sampeng  
       2018-09-13 16:12:49 +08:00
    和 java web 无关。

    朋友丢给你维护的 java 代码不符合你心意和预想而已。。。拿别人的代码来维护,就别把帽子扣到语言上。
    sagaxu
        11
    sagaxu  
       2018-09-13 16:14:15 +08:00 via Android
    见过自己手拼 json 的 java web 吗?格式还是非标的
    ala2008
        12
    ala2008  
       2018-09-13 16:58:53 +08:00
    jpa 了解一下?
    wizardforcel
        13
    wizardforcel  
       2018-09-13 23:29:27 +08:00 via Android
    你不能强迫每个人都用 spring 全家桶的啊。。。

    十年前开始的项目没办法
    woscaizi
        14
    woscaizi  
       2018-09-14 09:43:41 +08:00
    @nilrust #3 mybatis 这个是动态 sql,mybatis 已经做了防注入了,不放心可以加个 druid。
    用 mybatis 现在大多是因为有相关的代码生成工具,可以直接生成各层的代码吧。
    @linpf #8
    web 层面用 java 的应该比较少吧,现在常用的是前后端分离啊。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5016 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 03:57 · PVG 11:57 · LAX 20:57 · JFK 23:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.