【问题标题】:Is this a reasonable approach for my Java web app? [closed]这对我的 Java Web 应用程序来说是一种合理的方法吗? [关闭]
【发布时间】:2013-12-12 22:36:48
【问题描述】:

只是想知道是否有更好的方法来构建我正在创建的网络应用程序?我不会展示很多代码,我更感兴趣的是遵循最佳实践:

  1. Index.html 包含静态表单
  2. 用户填写表单,POST 请求由 Java Servlet 处理
  3. servlet 包含 3 个方法:

    • doPost(HttpRequest, HttpResponse)
    • doGet(HttpRequest, HttpResponse)
    • processRequest(Map map)
  4. doPost() 构造一个 hashmap 并以 key:value 格式将表单中的所有变量分配给它。然后它调用方法processRequest(Map map)

  5. processRequest(Map map) 有一个功能:使用映射变量创建类formParser 的新实例:即formParser parser = new formParser(map);
  6. formParser 类有一个构造函数和一个方法:

    • 构造函数初始化一个新的 HashMap 克隆原始的和一个新的 LinkedList 用于存储值并使用 map 参数调用方法

      Map<String, String> paramMap = new HashMap<String, String>(map);
      List<String> paramList = getParams(paramMap);
      
    • 方法public LinkedList&lt;String&gt; getParams(Map paramMap) 然后检查映射中的所有键:值对,并且只接受没有null 值的那些

  7. 然后,我使用有效的键:值对将某些 XML sn-ps 写入预先存在的 XML 骨架,然后将其发送到外部 REST-API。我还没有写这段代码。

编辑:我应该补充一点,我是 Java Web 编程的新手,这就是为什么我只是试图验证我的程序方法的有效性,而不是代码本身。稍后会出现。

【问题讨论】:

  • 我们可以看看你的代码吗?显然,第 7 步可能更高效;因为你还没有写代码。
  • @ElliottFrisch 我还不关心第 7 步。我想确保到目前为止我所做的是一个好的方法,仅此而已。你几乎有我的代码,几乎没有什么要添加的
  • 也许您可以从客户端(使用一些 JavaScript)移出“空”参数。所以你不需要在 Java 端做这些事情。
  • @sk2212 我已经在考虑这个替代方案了。我打算在 JavaScript 中创建一个动态表单,以便用户只能看到基于他们之前选择的表单字段。这可能是一个更好的方法
  • 效率无关紧要。如果您是 Java Web 编程的新手,请先让它工作,然后再担心效率。那里有一百万个优秀的 Web 框架(例如 Spring)。即使您想自己编写,也可以向他们学习。

标签: java jakarta-ee servlets architecture


【解决方案1】:

我认为不创建 LinkedList 可以稍微改进第 6 步。如果我理解正确,LinkedList 用于删除 NULL 值。这可以通过遍历映射的键、检索它们的值并从映射中删除任何具有 NULL 值的键来实现。

Map map = new HashMap<String, String>();
map.put("name1","somevalue");
map.put("name2",null);

for(String s : map.keySet()){ 
    String value = map.get(s);
        if ( s == null){
            map.remove(s);
        }
}

【讨论】:

  • 谢谢,这正是我正在寻找的答案。我想确保我在编程时能正确高效地完成它。
【解决方案2】:

我不知道您所说的“效率”到底是什么意思,但如果您谈论的是性能,我看不出您描述的步骤中有什么疯狂的事情,IMO 就足够了。

采用最简单、最常用的设计,如果出现问题,您可以提高性能。根据我的经验,Web 应用程序中 99.999% 的性能问题来自于做一些疯狂的事情(即不寻常、复杂的方法)。

【讨论】:

    【解决方案3】:

    由于您是 Web 编程新手,因此您不应考虑性能问题。

    只关注工作代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 2013-09-13
      • 2015-03-11
      • 1970-01-01
      相关资源
      最近更新 更多