Обзор разработки проектов с нуля
В последнее время это обзор структур данных и алгоритмов, то есть выданный ранее алгоритм сортировкиРезюме восьми основных рейтингов,Java реализует односвязный список,Стеки и очереди — это так просто,Десять простых арифметических вопросови т.д...
Быть оскорбленным не нужно, даже если это очень просто, иногда требуется много времени, чтобы понять.
Первоначально я хотел оставить этот пост в блоге, чтобы он был написан после моего последнего обзора основ Java, ввиду того факта, что некоторые студенты в официальной учетной записи хотят увидеть случай входа в систему по электронной почте и хотят увидеть, какова предыстория разработки Java. , поэтому я написал это заранее.
Этот проект — первый SSM-проект, который я написал сам (в конце концов, я должен что-то делать после обучения, верно), и это небольшая вещь, написанная в прошлом году. Конечно, оглядываясь назад на этот проект сейчас, можно заметить множество недостатков, которые приведены только для справки. Это не новая технология, просто поставьте мою предыдущуюнаучился в то времячто-тозаключить...Если хочешь получить новые знания, можешь остаться здесь~
Таким образом, вы можете увидеть более старую технологию, и будут места, где она плохо написана~Для студентов, которые написали проекты, это просто демонстрация. Для студентов, которые не написали проект, вы можете обратиться к нему должным образом, потому что используемые техники очень просты, и все они знакомы, и в них не будет ничего сложного для понимания ~
PS:Я надеюсь, что вы, ребята, не атакуете его, я не принимал никаких мер безопасности.. Даже если не реализована функция оставления комментариев, предотвращение XSS-атак, будьте милосердны~
адрес:
- Предварительный просмотр:www.zhongfucheng.top/
- Гитхаб:GitHub.com/Zhongf UC очень…
Напишите запись:
Напишите первую статью проекта с нуля [Building Environment]
Написать вторую часть проекта с нуля [вход регистрация, чат, модуль избранного]
Напишите третью часть проекта с нуля [онлайн-чат и личные избранные]
Напишите четвертую часть проекта с нуля [Сборка среды Linux]
Написать пятую статью проекта с нуля [функция комментария, памятка]
Напишите окончательный проект с нуля [поддержите веб-сайт, исправьте ошибки]
1. Введение в функцию
Варвара много чего сказала, давайте посмотрим, какие функции у этого проекта~
Это домашняя страница, которая даст трехдневный прогноз погоды в зависимости от местности:
Очень простая страница регистрации, зарегистрируйтесь по электронной почте~
2018-03-30 15:51:23 Что ж, при написании этой записи в блоге тоже произошла ошибка...
org.springframework.mail.MailAuthenticationException: Authentication failed
Я подозревал, что пароль, авторизованный для отправки электронной почты, был неправильным (устаревшим), поэтому я обновил его, и это сработало~
На этом этапе нажмите «Зарегистрироваться», и вам нужно будет подтвердить свой адрес электронной почты ~
Зайдите в свой почтовый ящик, чтобы проверить почту:
Нажмите Подтвердить, чтобы завершить регистрацию (Если не верифицирован, то вход невозможен):
Этот проект использует Широ для аутентификации авторизации.Если вы нажмете следующее меню без входа в систему, вы перейдете на страницу входа~:
Описание сайта:
Функционал этого сайта не сложный, а все функции разработаны для удобства использования.
- 1. Личные Избранные: Добавить часто используемые веб-сайты.Стоит отметить, что url (веб-сайт) лучше всего копировать из браузера, что является наиболее удобным и безопасным способом.
- 2. Личная заметка: добавьте личную заметку, установите время и измените время перед отправкой электронного письма.
Кажется, есть задержка в отправке писем
Далее мои личные фавориты.Добавьте несколько часто используемых URL-адресов и дайте им имя. Когда вы вводите символы в именованной части, вам будет предложено:
с клавиатуройКлавиши вверх и вниз для выбора и нажмите EnterПерейти на соответствующую страницу~
2. Техническое введение
Технологии используемые на сайте:
- 1. Макет страницы всего сайта: передняя часть использует Bootstrap для верстки, а фон использует проект GitHub с открытым исходным кодом: Particles-js. Панель навигации взята с зарубежного сайта: http://toolofna.com/
- 2. Домашняя страница. Функция прогноза погоды является производной от комбинации AutoNavi Maps API и Zephyr Weather API, что позволяет вам просматривать погоду за последние три дня, где находится текущий IP-адрес.
- 3. Личные избранные: используется инструмент полнотекстового поиска Elasticsearch.
- 4. Онлайн-чат: для создания заграждения используются сервис GoEasy push и jquery.barrager.js. В настоящее время эта функция не идеальна, так что следите за обновлениями.
- 5. Регистрация и вход в систему: BootstrapValidation используется для проверки формы, функции JavaMail для отправки электронных писем и кода динамической проверки Gif.
- 6. Личная заметка: инструмент планирования задач Quartz используется для регулярной отправки электронных писем.
Общее резюме:
- 1. Проект сборки Maven
- 2. Используйте базу данных Mysql
- 3. Tomcat как сервер приложений
- 4. Уровень Dao использует Mybatis, уровень Controller использует SpringMVC, а Spring интегрирует и управляет транзакциями между Mybatis и SpringMVC.
- 5. Структура управления полномочиями Shiro контролирует вход в систему и управление аутентификацией для личных избранных функций и функций онлайн-чата.
- 6. Используйте FreeMarker для рендеринга страниц и настройки шаблонов для отправки электронных писем.
- 7. Используйте интеграцию Quartz и Spring, чтобы завершить функцию личного меморандума.
- 8. Используйте Nginx в качестве прокси-сервера для обработки статических ресурсов и переадресации прокси.
Как видите, на сайте не так много функций, всего несколько небольших модулей, я всего лишь создал три таблицы:
3. Расскажите о процессе написания
По сути, все новички одинаковы: как написать сайт на Java? Дизайн базы данных кажется очень сложным, и очень проблематично, если дизайн неправильный. Веб-интерфейс настолько раздражает, а страницы, написанные мной, выглядят не очень хорошо. Эта функция кажется такой сложной для достижения, это должна быть довольно продвинутая технология. Фундамент у меня недостаточно прочный, напишу, когда научусь, и так далее... Всегда хотел написать сайт, но так и не начал.
Я думал над вышеуказанными вопросами, но все же написал такую мелочь....
Учебные проекты, которые я писал в то время, были темами, заданными в видеоуроках, таких как то, что я публиковал ранее:Резюме проекта мобильного торгового центраиКраткое описание системы налоговой службы, даны координаты пакета jar или maven, а главная страница и логотип базы данных проекта в основном разработаны, мне нужно только заполнить Java-код. И на этот раз страницы внешнего интерфейса, дизайн базы данных, координаты Maven и т. Д. Все это я организовал сам.
От начала до конца написания у меня ушло около месяца, в этот период нужно было ходить на занятия, идти домой, какие-то мелочи и т.д. Если вы никогда раньше не писали проект, вам рекомендуется бросить его и начать, и вы сможете многому научиться за это время. И не бойся писать плохо (пока ты такой же бессовестный, как я, нетположить такую мелочьОтправьте его на официальный аккаунт или отправьте на другие блог-платформы)
Итак, что я могу узнать, бросив такой гаджет самостоятельно?
3.1 Создание окружения и сбор урожая
- При настройке средыНе думайте, что последняя версия потрясающая, я собираюсь использовать последний, не устаревший человек! В то время я использовал Spring5.0, пакет драйверов Mysql 6.x, jdk1.8.Если я могу использовать последний, я могу использовать последний. потомПосле завершения проекта он не запускается~~~
- На самом деле нет необходимости использовать последнюю версию, последняя версия обычно содержит ошибки, а версии без ошибок не обязательно совместимы с другими версиями. Вы знаете, что Spring не только имеет вещи Spring, но также зависит от многих других пакетов jar. Точно так же Mysql использует последний пакет драйверов, и использовать реверс-инжиниринг непросто (я видел те же ямки, с которыми несколько раз сталкивался в SegmentFault).
- Вообще информации о последних вещах очень мало, кроме официальных документов любые проблемы решаются только сами собой. Старая версия отличается, у многих будут проблемы, а решений будет довольно много~
В то время я провел ночь в библиотеке и усвоил урок:
3.2 Вход и регистрация урожая
Если вы изучили основы JavaWeb для входа в систему и регистрации этой функции, вы должны это сделать. Во всяком случае, я делал это много, много раз, один раз с Servlet, один раз с JSP, один раз с AJAX, один раз с системой xxx, один раз с XXX Mall. Во всяком случае, каждый раз что-то новое добавляется
Вначале я хотел войти в систему с помощью WeChat, моей учетной записи (электронной почты) или SMS.
Позже выяснилось, что для входа в WeChat требуется сертификация предприятия, что невозможно. СМС логин просить денег, не хотят давать.
Так что, в конце концов, я могу войти только со своей электронной почтой~~~ Конечно,Основные функции, которые должны быть, есть.:
- зашифрованный пароль
- Параметры контрольной суммы переднего плана и контрольной суммы фона
- Забыл пароль, функция «Запомнить меня»
- код верификации
Так как я ненадолго изучил Широ раньше, я подумал, что для Широ очень удобно быть авторитетом, поэтому я хотел испытать это на себе ~ На самом деле, это было не так просто, как когда я это узнал!
В Широ также ушло много времени, потому что я думал использовать AJAX для отправки.Если он правильный, я перейду на домашнюю страницу.Если пароль (параметр..) и другие ошибки неверны, я вернусь JSON, чтобы дать пользователю дружественную подсказку. Однако аутентификация формы Широ по умолчанию возвращает страницу, и она тут долго зависает (иногда нет багов, иногда баги есть), и я не могу разобраться... Наконец-то я многое проверил Данные переписывают только FormAuthenticationFilter. Широ нужно переписать много вещей, чтобы управлять им. На тот момент я понял блок-схему:
Функция Широ «запомнить меня» изначально считалась очень полезной, но на самом деле она была довольно безвкусной. Запись, которую я сделал в то время:
Во всяком случае, Широ дает мне ощущение, что многие вещи приходится переписывать и контролировать самому, и если он используется в небольшой области, я думаю, что будет удобно написать контроль URL самостоятельно. Также может быть, что моя учебная поза неправильная~
Во время модуля регистрации входа я также нашел много информации для себя.
- Дизайн базы данных также относится к Интернету и внес некоторые изменения самостоятельно.
- Я никогда раньше не связывался с JavaMail.
- BootStrapValidation также используется, когда вы его видите.
- Не говоря уже о том, чтобы бросить Широ на несколько дней.
Так что не обязательно использовать то, с чем вы знакомы,Пока вы хотите реализовать некоторые общие функции, которые вы видели, всегда будут решения, на которые вы можете сослаться..
3.3 Сбор личных фаворитов
Эта функция автозаполнения — это то, что я хотел сделать, когда впервые захотел создать свой собственный веб-сайт. Потому что я привык использовать клавиатуру для поиска файлов, для поиска вещей.
Например, под виндой я скачал ролан, закинул в него часто используемый софт, ввел какие-то ключевые слова и подсказал, а потом могу открыть софт, выбирая вверх-вниз на клавиатуре, что очень удобно
Прежде чем писать, я узнал о Lucene и знаю, что Lucene является предком индекса полнотекстового поиска (я не занимался связанными случаями) [Ссылка на сообщение в блоге:Люсен это просто], позже я узнал, что Solr и Elasticsearch очень популярны в энтерпрайзе, а Elasticsearch — это всякие горячие, всякие удары (ха-ха, без уничижительного смысла, очень полезно).
Так что я потратил несколько дней на изучение Elasticsearch с нуля.В то время ссылочный блогер дал версию 2.3.3.Я не думал, что это что-то, поэтому я использовал ее. Это последняя версия 5.x ~ позже будет запись в блоге: [Elasticsearch — это просто】
Elasticsearch должен переводить английский язык при возникновении многих проблем, поэтому также очень важно иметь доступ к внешней сети~
Я не очень хорошо говорю по-английски, поэтому я потихоньку посмотрю на это, получу плагин для Chrome для перевода, проблемы должны быть решены, и вот как это растет ~
3.4 Урожай от создания среды Linux
В прошлом только несколько очень простых команд в Linux,ls cd vi
Они забываются, когда вы используете их меньше, поэтому вам нужно снова просмотреть Linux (занятия по Linux также проводятся в этом семестре. Через некоторое время я планирую обобщить общие команды и связанные с ними моменты Linux, так что следите за обновлениями~)
Я потратил немного денег, чтобы купить облачный сервер (10 юаней в месяц, если у студентов есть скидка), я также предлагаю, чтобы студенты в школе могли купить его и играть самостоятельно, ознакомиться с командами Linux, и многие программы доступны только под Linux Лучшая поддержка (например: Elasticsearch, Nginx), особенно Elasticsearch - проблема с установкой под windows!
На этапе Linux я также пошел изучать Nginx. Я часто слышал об этом HTTP-сервере, когда еще не изучал Nginx, но никогда не знал, для чего он используется. Его наиболее распространенная роль - две:
- Работа со статическими ресурсами
- Динамическая переадресация ресурсов на веб-сервер (Tomcat)
Изучите соответствующие знания о файле конфигурации Nginx, о том, как его настроить и для чего нужна конфигурация ~ вы можете ее использовать.
3.5 Функция комментариев и сбор заметок
В дизайне базы данных также есть несколько типов функций комментариев:
- Рассматривайте как ответы, так и комментарии как комментарии, вы можете использовать @XXX в качестве ответа, аналогично комментариям на IOS Zhihu [этот метод самый простой]
- Разделите ответы и комментарии, либо добавьте еще один родительский атрибут в одну таблицу, либо разделите на две таблицы [немного сложно, один комментарий может соответствовать нескольким ответам]
- Способ реализовать комментарий и ответить на «построить здание», это комментарий Netease [это самый сложный]
То, что я сделал, это просто функция оставления сообщения, поэтому я использовал первую напрямую ~
Для заметки вы должны использовать фреймворк планирования времени Quartz, Я связался с ним раньше, но в его использовании все еще есть ошибки.
- Тестирование Quartz в Junit не отвечает
- Spring не может вводить объекты в класс Quartz Job
Если бизнес простой, я также хочу в следующий раз поиграть в планирование задач, которое поставляется с Spring ~
Четвертый, последний
Вышеприведенное кратко представляет функции и процесс написания моего небольшого проекта.Для более подробного ознакомления с бизнесом вы должны прочитать мой пост в блоге и исходный код ниже.Я также надеюсь, что вы сможете что-то получить и сделать небольшой проект самостоятельно~
Сейчас кажется, что многие из них не были прописаны в спецификациях (возврат JSON, модуляризация JavaScript) и т.д., но ведь это опыт роста самостоятельного изучения программирования, и я всегда буду чувствовать себя так, когда буду оглядываться назад в предыдущем коде. Я не буду делать рефакторинг в короткие сроки, а изучу азы Java~
Следующие сообщения в блоге - это почти все основы или алгоритмы Java (небольшое количество). Я надеюсь, что вы можете меня сильно поддержать. Я буду стараться изо всех сил обновлять его в течение школьных дней ~
Если в статье есть какие-либо ошибки, пожалуйста, поправьте меня, и мы сможем общаться друг с другом. Учащиеся, привыкшие читать технические статьи в WeChat и желающие получить больше ресурсов по Java, могутОбратите внимание на публичный аккаунт WeChat: Java3y