【问题标题】:Settings of MVC web applicationMVC Web 应用程序的设置
【发布时间】:2019-04-21 03:55:06
【问题描述】:

我是网络应用程序的新手。

我正在按照模型-视图-控制器模式创建一个 Web 应用程序。 我有 MySQL 数据库(模型)、jsp 页面(视图)和 DAO(控制器)。

如何从数据库中获取数据并用它动态地创建一个表?我必须在 JavaScript 中使用 JSP scriptlet 吗?我读到不推荐。

【问题讨论】:

  • 我们需要更多信息,您是否尝试在您的 JSP 中使用任何类型的 Web 框架?什么想法?您希望它由服务器呈现,还是作为 API 公开(例如使用 JSON)并让您的客户端完成工作?
  • @LuísBrito 只想将其公开为 API。
  • 将 java 服务器用作 RESTful JSON API,您将不需要 JSP。客户端可以完成所有工作。您还可以查看一些 Web 应用程序框架,例如 Vue.js、ReactJS 或 Angular。

标签: javascript jsp web web-applications


【解决方案1】:

做到这一点的一种方法是在您的模型中拥有一个代表数据库行的类,并拥有一个读取一行的方法。然后你可以有一个返回对象列表的 Get 方法......类似于......

public class MyItem
{
    public string Id { get; set; }
    public string MyProperty { get; set; }

    public List<MyItem> Get()
    {
        List<MyItem> items = new List<MyItem>();

        try
        {
            using (SqlConnection connection = new SqlConnection(_connectionString))
            {
                using (SqlCommand select = new SqlCommand())
                {
                    select.CommandText = @"select bla bla bla from bla whete MyProperty=@MyProperty";

                    select.Parameters.AddWithValue("@MyProperty", this.MyProperty);

                    select.Connection = connection;
                    connection.Open();

                    using (SqlDataReader reader = select.ExecuteReader())
                    {
                        DataTable dataTable = new DataTable("ResultSet");
                        dataTable.Load(reader);

                        if ((dataTable != null) && (dataTable.Rows != null) && (dataTable.Rows.Count > 0))
                        {
                            foreach (DataRow row in dataTable.Rows)
                            {
                                MyItem item = new MyItem();
                                item.FromRow(row);
                                items.Add();
                            }
                        }
                    }
                }
            }
        }
        catch (Exception)
        {
            log here
            throw;
        }
        return items;
    }
    public void FromRow(DataRow row)
    {
        Id = row["Id"].ToString();
        ...
    }
}

在您的控制器中,您可以执行类似...

[Authorize(Roles = "...")]
public IActionResult GetMyItems(string id)
{
    MyItem item = new MyItem() { Id = id };
    var items = item.Get();

    return items;
}

那么您应该能够使用视图中的 Model 属性进行访问。

【讨论】:

    【解决方案2】:

    假设您想将其公开为带有独立客户端应用程序的 JSON API,如 cmets 中所述。您需要向服务器发出 AJAX HTTP 请求。您可以为此使用许多不同的库,例如 jQuery。


    获取数据

    首先使用jQuery.get从您的网络服务器请求数据:

    $.get( "ajax/test.html", function( data ) {
      $( ".result" ).html( data );
      alert( "Load was performed." );
    }); 
    

    如需详细参考,请查看jQuery documentation中的教程。

    在 HTML 中呈现数据

    使用jQuery有几种方法可以做到,我推荐以下一些答案作为参考:

    【讨论】:

      猜你喜欢
      • 2012-11-30
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 2017-09-30
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      相关资源
      最近更新 更多