Файл: Отчет защищен с оценкой Преподаватель В. А. Язев 2023 создание webприложения отчет о лабораторной работе 5 по курсу Технологии программирования ягту 09. 03. 04 001 лр.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 01.12.2023

Просмотров: 23

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Министерство науки и высшего образования РФ

Федеральное государственное бюджетное образовательное учреждение

высшего образования

«Ярославский государственный технический университет»

Кафедра «Информационные системы и технологии»
Отчет защищен

с оценкой ________

Преподаватель

__________ В.А. Язев

«___» ____________ 2023


СОЗДАНИЕ WEB-ПРИЛОЖЕНИЯ
Отчет о лабораторной работе №5

по курсу «Технологии программирования»
ЯГТУ 09.03.04 – 001 ЛР
Отчет выполнил

студент гр. ЦПИ-21

____________ Н.А. Бобровский

«___» ____________ 2023

2023

Цель работы: создание WEB-приложения на ASP.Net Core MVC используя Entity Framework Core (СУБД: PostgreSQL). Тема базы данных: фильмы.

Ход работы:

  1. Первый этап – создание проекта веб-приложения ASP.Net Core (Майкрософт).

  2. Второй этап – Создание необходимых папок для контроллеров, моделей и представлений соответственно названиям Controllers, Models, Views.



Рисунок 1 – Обозреватель решений после создания необходимых папок

  1. Третий этап – Создание необходимых файлов контроллеров, моделей и представлений для работы веб-приложения.



Рисунок 2 – Обозреватель решений после создания необходимых файлов

  1. Четвёртый этап – написание кода для работы веб-приложения.

Код файла HomeController.cs, который содержит три метода действия «Index», «Privacy», «Error». Index возвращает представление, которое будет отображаться на главной странице приложения, Privacy возвращает представление, но на дополнительной странице, Error возвращает представление об ошибке, если она произойдёт. Контроллер также содержит конструктор, который принимает интерфейс «ILogger», используемый для регистрации сообщений журнала (log messages) для контроллера:

using Microsoft.AspNetCore.Mvc;

using MoviesBDLab.Models;

using System.Diagnostics;
namespace MoviesBDLab.Controllers

{

public class HomeController : Controller

{

private readonly ILogger _logger;
public HomeController(ILogger logger)

{

_logger = logger;

}
public IActionResult Index()

{

return View();

}
public IActionResult Privacy()

{

return View();

}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]

public IActionResult Error()

{

return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });

}

}

}

Код файла MovieController.cs, который отображает список фильмов. Метод «Index» возвращает представление со списком всех фильмов из базы данных, используя контекст базы данных «MovieContext». В методе «Index» сначала получается список всех фильмов из базы данных с помощью метода «ToList()» и сохраняется в переменной «movies», а затем список передаётся в представление, которое отображается на странице с помощью метода «View(movies)». Конструктор контроллера принимает экземпляр контекста базы данных «MovieContext», который передаётся в поле «_moviesContext» и используется для выполнения запросов к базе данных:

using Microsoft.AspNetCore.Mvc;

using MoviesBDLab.Models;
namespace MoviesBDLab.Controllers

{

public class MovieController : Controller

{

private readonly MovieContext _moviesContext;
public MovieController(MovieContext moviesContext)

{

_moviesContext = moviesContext;

}
public IActionResult Index()

{

List movies = _moviesContext.Movies.ToList();

return View(movies);

}

}

}

Код файла ErrorViewModel.cs, который представляет модель для отображения страницы с сообщением об ошибке (Error page) в ASP.NET Core MVC приложении. Класс «ErrorViewModel» содержит свойства «RequestId», он представляет идентификатор запроса, который генерируется приложением для каждого запроса, и которое может использоваться для отслеживания и регистрации ошибок, имеет тип строки и может быть пустым значением, «ShowRequestId» является свойством-аксессором, которое возвращает логическое значение, указывающее, должно ли отображаться значение свойства «RequestId» на странице, если значение не пустое, то вернётся true, а иначе – false. Данный класс используется для передачи данных в представление с сообщением об ошибке, которые отобразятся на странице:

namespace MoviesBDLab.Models

{

public class ErrorViewModel

{

public string? RequestId { get; set; }
public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);

}

}

Код файла Movie.cs, отвечает за класс модели данных для фильмов в ASP.NET Core приложении. Данный класс содержит свойства, которые представляют поля фильма. Этот класс также используется в контексте базы данных, для определения таблицы «movies» в базе данных и для доступа к данным фильмов в приложении:

using System;

using System.Collections.Generic;
namespace MoviesBDLab.Models;

public partial class Movie

{

public int id_movie { get; set; }

public string title_movie { get; set; }

public string director_movie { get; set;}

public int year_movie { get; set;}

public int duration_movie { get; set;}

public decimal rating_movie { get; set;}

}

Код файла MovieContext.cs, это класс контекста базы данных, который настраивает и управляет доступом к базе данных фильмов. Класс «MovieContext» наследуется от класса «DbContext». Этот класс содержит методы для работы с базой данных, такие как «DbSet()», который представляет набор сущностей в базе данных. Класс «MovieContext» также определяет методы «OnConfiguring» и «OnModelCreating», которые позволяют настроить базу данных фильмов. Метод «OnConfiguring» задает строку подключения к базе данных, в которой хранятся фильмы. Метод «OnModelCreating» определяет схему таблицы «movies» и ее свойства. В частности, он задает типы данных и ограничения для каждого поля таблицы. Класс "MovieContext" используется в приложении для доступа к данным фильмов в базе данных и для выполнения операций CRUD (создание, чтение, обновление, удаление) над этими данными:

using System;

using System.Collections.Generic;

using Microsoft.EntityFrameworkCore;
namespace MoviesBDLab.Models;

public partial class MovieContext : DbContext

{

public MovieContext()

{

}
public MovieContext(DbContextOptions options)

: base(options)

{

}
public virtual DbSet Movies { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see http://go.microsoft.com/fwlink/?LinkId=723263.

=> optionsBuilder.UseNpgsql("Host=localhost;Port=5432;Database=MoviesBD;Username=postgres;Password=bobr1471");
protected override void OnModelCreating(ModelBuilder modelBuilder)

{

modelBuilder.Entity(entity =>

{

entity.HasKey(e => e.id_movie).HasName("movies_pkey");
entity.ToTable("movies");
entity.Property(e => e.id_movie)

.UseIdentityAlwaysColumn()

.HasColumnName("id_movie");

entity.Property(e => e.title_movie)

.HasMaxLength(100)

.HasColumnName("title_movie");

entity.Property(e => e.director_movie)

.HasMaxLength(100)

.HasColumnName("director_movie");

entity.Property(e => e.year_movie)

.HasColumnName("year_movie");

entity.Property(e => e.duration_movie)

.HasColumnName("duration_movie");

entity.Property(e => e.rating_movie)

.HasColumnName("rating_movie");

});
OnModelCreatingPartial(modelBuilder);

}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);

}

Код файла Index.cshtml страницы Home, необходим для отображения главной страницы сайта. На ней написано ФИО студента и номер лабораторной работы:

@{

ViewData["Title"] = "Home Page";

}


Лабораторная работа #5




Выполнил студент группы ЦПИ-21

Бобровский Никита Анатольевич






Рисунок 3 – Вид главной страницы Home

Код файла Privacy.cshtml, является дополнительной страницей, которая показывает возможность создания нескольких страниц веб-приложения:

@{

ViewData["Title"] = "Privacy Policy";

}

@ViewData["Title"]



Используйте эту страницу для подробной информации о политике конфиденциальности вашего сайта.




Рисунок 4 – Вид дополнительной страницы Privacy

Код файла Index.cshtml страницы Movie, которая отвечает за список всех фильмов, внесённых в базу данных и оформленная с помощью CSS и HTML:

@model List
DOCTYPE html>







Список фильмов

























@foreach (var movie in Model)

{















}



Название Режиссёр Год выпуска Продолжительность Рейтинг
@movie.title_movie @movie.director_movie @movie.year_movie @movie.duration_movie @movie.rating_movie








Рисунок 5 – Вид страницы Movies с заполненной базой данных

В папке Shared находятся коды необходимые для корректного отображения представлений нашего веб-приложения, их коды соответственно:

@using MoviesBDLab

@using MoviesBDLab.Models

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

@{

Layout = "_Layout";

}

Код файла appsettings.json, в котором задаётся строка подключения веб-приложения к базе данных, указывая имя хоста, порт по которому подключается веб-приложение, название базы данных, имя пользователя и пароль, кому принадлежит данная база данных:

{

"ConnectionStrings": {

"DefaultConnetion": "Host=localhost;Port=5432;Database=MoviesBD;Username=postgres;Password=bobr1471;"

},

"Logging": {

"LogLevel": {

"Default": "Information",

"Microsoft.AspNetCore": "Warning"

}

},

"AllowedHosts": "*"

}

Код файла Program.cs, здесь происходит настройка конфигурации ASP.NET Core веб-приложения. Сначала создается экземпляр «WebApplicationBuilder», который используется для настройки приложения. Далее определяется строка подключения к базе данных, используя конфигурацию приложения. Затем «MovieContext» добавляется в контейнер зависимостей, используя строку подключения для подключения к базе данных. Затем добавляются контроллеры с представлениями в контейнер зависимостей. В конце определяется конвейер обработки запросов и конфигурируются маршруты контроллеров. Все запросы будут обрабатываться через «app.Run()». Если приложение не находится в режиме разработки, используется «middleware» для обработки исключений и принудительной переадресации HTTP на HTTPS.:

using MoviesBDLab.Models;

using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
string con = builder.Configuration.GetConnectionString("DefaultConnetion");

builder.Services.AddDbContext(option => option.UseNpgsql(con));

// Add services to the container.

builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.

if (!app.Environment.IsDevelopment())

{

app.UseExceptionHandler("/Home/Error");

// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.

app.UseHsts();

}
app.UseHttpsRedirection();

app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(

name: "default",

pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();

  1. Пятый этап – демонстрация работы созданного веб-приложения, создав новые записи, удалив и отредактировав их, используя pgAdmin 4 базы данных PostgreSQL.

Создание двух новых записей:



Рисунок 6 – Добавление двух записей в базу данных



Рисунок 7 – Веб-приложение после добавления двух новых записей в базе данных

Удаление первой добавленной записи с названием «Интерстеллар»:



Рисунок 8 – Удаление записи в базе данных



Рисунок 9 – Веб-приложение после удаления записи «Интерстеллар»

Редактирование новой записи:



Рисунок 10 – Изменение названия фильма в базе данных



Рисунок 11 – Веб-приложение после изменения названия фильма

Вывод: было создано WEB-приложения на ASP.Net Core MVC используя Entity Framework Core в СУБД – PostgreSQL, с тематикой – фильмы.