写在最前面

  为什么要写一个这样的教程?作为一个软件工程专业的学生,上课老师讲得飞快,几乎都是在课后自己消化,我知道学习记录的重要性。我自己本身还有很多很多基础的东西都没有学会,比较博客园的人有很大的差距。而写这个不是要求看的人都遵守我的想法,即使这个教程不会讲多大的概念方面的东西,但也希望你能够在里面学习到一些自己觉得有用的东西,学到一些思维和想法就好了。希望我写的哪些地方有错误的能够指正,谢谢。

  我们想用的包括JSP、Servlet、MySql、Tomcat、。当然,前端的“三驾马车”就是更基础的东西了。要知道这些东西。

  我的HTTP协议还不算熟悉,大家可以看这个文章学习。http://www.cnblogs.com/ranyonsue/p/5984001.html

一、JSP

  JSP的教程在菜鸟教程W3School上看,JSP可以写HTML代码,也可以在<% %>中写代码。然后和Servlet两者结合起来使用的话,效率很高,而且JSP写的前端代码灵活性很强,当然这里只会说纯JSP和Servlet了,不考虑Vue和AngularJS等这些框架。

  我们看一个普通的例子,抛开JSP的已经给我们做好的循环<c:forEach>标签。

  假设我们要循环显示很多用户的信息,我们用<table></table>来表示,假设已经获取到ArrayList<User> users;

<table>
<%
for(int i = 0; i < users.size(); i++){
%>
<tr>
<td><%=users.get(i).username() %></td>
<td><%=users.get(i).password() %></td>
</tr>
<%
}
%>
</table>

  这样,一个users就能够动态的一行一行的显示用户名和密码的信息。这就是结合起来用带来的优势,总而言之,JSP就是HTML文件,只是可以写Java进去。

二、Servlet

  说实话,最开始学习Servlet和JSP的那会儿进了实验室,学习的几乎没有懂,那会儿大一,有很多东西都不了解,后来记得检查的时候,我也是写了一个漂漂亮亮的HTML的界面,然后实现的功能基本没实现,处理业务等的信息全部都在JSP中实现了。实在惭愧,后来做项目的时候,慢慢地才把这些学到了。

  那什么是Servlet呢?如果想很深的了解的话就多看博客,然后看看他们的讲解就好了。这里我的解释就是Servlet就是一种中间的东西,当我们需要把自己本地的服务器和Web浏览器相连接的时候,Servlet就起作用了。同时,我们最常用的就是Servlet获取form表单所传递过来的数据。

  举个例子,我们想要实现登陆功能,首先从JSP中传入用户名和密码,然后再在Servlet中进行处理。为什么要在Servlet中处理呢?其实可以选择在JSP中直接获取很多很多信息的,但是HTML代码始终时HTML代码,插入HTML不仅仅会影响效率,还给程序员在修改和维护代码的时候找麻烦。

<form action="Login" method="post">
<input type="text" name="username" />
<input type="text" name="password" />
<input type="submit" value="login" />
</form>

  比如这个,使用的时候,在action中填写路由的地址,这里指向Login的Servlet。method="post"则是以Post方法向Servlet传递。这里一般采取Post或者Get方法,两者有什么区别呢?假设我们填入用户名:admin 密码:admin。

  Get:http://localhost:8080/项目名称/Login?username=admin&password=admin

  Post: http://localhost:8080/项目名称/Login

  不难发现,Get和Post的差别是很大的,至少在路由上,Get将用户名和密码都显示了,这是很不安全的,Post则不显示,所以这里采用Post更加可靠。当然,Get和Post不仅仅只是显示不显示的不同,它们在请求的大小也是不一样的。

三、MySql

  数据库,很多人都在说数据库数据库,数据库是什么呢?MySql就是一种数据库,它是关系型数据库,简单来说,两个表之间想产生联系的话,是通过字段之间的关系。人的一生要产生很多数据,但我们不会把所有的信息都保存在一张很大很大的表里面,这样速度会极大降低......于是我们把一些信息建在多个表里面,两个表通过一个相同的字段进行联系,这样两个表就有关系了。和结婚一样的,两个人本身没有什么联系,是属于两个户口本上的,而假如放在一个户口本上,就是一家人了是吧。

  那我们需要知道MySql的什么呢?学会怎么使用和书写Sql语句,并且分清楚,MySql和Navicat之间有什么区别,又有什么联系。如何书写MySql语句,这些都是最基础的,我只需要讲怎么构建一个简单的项目好啦。

  如果我们安装了MySql,那我们就有了可以操作的数据库了。我们可以在下载好的MySql的控制台增删改查,当然如果每次都仅仅是使用命令行进行操作的话,至少我是觉得有些难受的。于是就想,怎么样才能让MySql的数据显示的更加直观,更好操作呢?于是Navicat就来了,它帮我们简化了管理数据库的操作。所以,Navicat不是数据库,它仅仅是管理数据库的一个工具,它帮助我们直观的看到数据库的内容和图形化界面,而严格来说,不使用Navicat项目一样可以链接数据库。他们之间的关系,就如同Linux系统和Linux的图形化界面,要的就是方便。

四、Tomcat

  我们必须要它,不然我们不能运行项目!Tomcat可谓是Servlet和JSP项目最漂亮的Web服务器了。我们需要将项目显示在浏览器上,所以Tomcat就可以把我们的项目装在里面,然后运行起来,发布到自己电脑的本地服务器上,这样我们就可以直接直观的看到自己所写的内容了。

五、总结

  学会使用这些,就很好了。

  当然,有时候最开始还是很懵而搞不清他们之间的关系,要想构建一个简单的项目,他们缺一不可。JSP和Servlet就是要写的代码,MySql就是要用的数据库,Tomcat就是把我们的项目发布的东西。如果准备好了开始做一个小的项目,调试好了所有的配置,就再看接下来的一篇文章就好了。

  

JavaWeb项目学习教程(1) 准备阶段的更多相关文章

  1. JavaWeb项目学习教程(2) 系统数据库设计

    最开始本来想写一个管理系统,因为考虑到期末来临,我女朋友就可以看着教程然后学一些东西,然后可以自己慢慢手敲代码.但无奈自己也太懒,两个月过后,我才开始继续写这个博客,而现在我都已经开学了.不过博客还是 ...

  2. Linux服务器部署JavaWeb项目完整教程

    本文大部分参考网上其他教程,是实际操作后回过头来的一些总结,希望可以对正在部署项目的你有所帮助. 基本环境:Centos7.tomcat8.jdk8,MySQL5.6.nginx 安装JDK yum ...

  3. 从javaweb项目学习

    1.sql语句 在insert语句中需要插入查询出来的值. Insert into a (a1,a2,a3) values (1,select num from b where id=1,3) 这样写 ...

  4. redhat7学习笔记之从零到部署javaweb项目

    REDHAT7学习笔记 1. 安装vmware10 安装过程略,下载地址:链接: https://pan.baidu.com/s/16odKKkRYBxGWDVo1cz_wxA 注意,10以上版本不在 ...

  5. Github点赞超多的Spring Boot学习教程+实战项目推荐!

    Github点赞接近 100k 的Spring Boot学习教程+实战项目推荐!   很明显的一个现象,除了一些老项目,现在 Java 后端项目基本都是基于 Spring Boot 进行开发,毕竟它这 ...

  6. maven学习(八)——使用maven创建javaweb项目

    构建JavaWeb项目 1.创建JavaWeb项目 1.使用mvn archetype:generate命令,如下所示: mvn archetype:generate -DgroupId=com.my ...

  7. IDEA实用教程(八)—— 创建JavaWeb项目

    七. 创建JavaWeb项目 创建工程 1) 第一步 2) 第二步 3) 第三步 如果要修改JavaEE版本,请根据下图所示进行修改 4) 第四步 2. 发布工程 1) 第一步 2) 第二步 3) 第 ...

  8. 《从零玩转JavaWeb+项目实战》-系列课堂录制计划

    点击试听课程 前言 很多自学编程的同学经常和我说想学一门语言自己到网上找一些教程看到一半就像背单词背到ambulance一样坚持不下去了....究其原因基本上都是:内容太多,太枯燥,专业术语听不懂,学 ...

  9. JavaWeb项目之多条件过滤

    相信很多同学在学习java基础之后,面对各种项目还是相当头疼,那今天我将手把手教你学会JavaWeb项目中的多条件过滤,希望你能在与我实战的过程中积累经验,更进一步. 分页查询 需求分析:在列表页面中 ...

随机推荐

  1. Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)

    前言 由于在开发My Blog项目时使用了大量的技术整合,针对于部分框架的使用和整合的流程没有做详细的介绍和记录,导致有些朋友用起来有些吃力,因此打算在接下来的时间里做一些基础整合的介绍,当然,可能也 ...

  2. Python学习--打码平台

    打码平台介绍 作用:可以通过第三方平台进行智能识别或者人工识别图片. 优点:1. 价格便宜: 2. 使用简单: 3. 识别率高 平台介绍: - 云打码(推荐) [http://www.yundama. ...

  3. jQuery插件实例五:手风琴效果[动画效果可配置版]

    昨天写了个jQuery插件实例四:手风琴效果[无动画版]那个是没有动画效果的,且可配置性不高,本篇为有动画效果.对于一些数据做了动态的计算,以实现自适应. 欢迎大家入群相互交流,学习,新群初建,欢迎各 ...

  4. vuejs安装篇

    1.安装nodejs,自带npm环境. 地址:https://nodejs.org/en/download/,Node.js 历史版本下载地址:https://nodejs.org/dist/  可自 ...

  5. 第 14 章 结构和其他数据形式(伸缩型数组成员C99)

    伸缩型数组成员C99 声明一个伸缩型数组成员的规则: 1.伸缩型数组成员必须是结构的最后一个成员: 2.结构中必须至少有一个成员: 3.伸缩数组的方括号是空的. 示例 struct flex { in ...

  6. 转 10 个 Nginx 的安全提示

    Nginx是当今最流行的Web服务器之一.它为世界上7%的web流量提供服务而且正在以惊人的速度增长.它是个让人惊奇的服务器,我愿意部署它. 下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你 ...

  7. animate is not a function(zepto 使用报错)[转]

    animate is not a function(zepto 使用报错) 1.为什么使用zepto写animate报错? 因为zepto默认构建包含: Core, Ajax, Event, Form ...

  8. android 7.0以上共享文件(解决调用系统照相和图片剪切出现的FileUriExposedException崩溃问题)

    在android7.0开始试共享“file://”URI 将会导致引发 FileUriExposedException. 如果应用需要与其他应用共享私有文件,则应该使用 FileProvider, F ...

  9. Android开发——Android中常见的4种线程池(保证你能看懂并理解)

    0.前言 转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52415337 使用线程池可以给我们带来很多好处,首先通过线程池中线程的重用 ...

  10. jsp泛型支持

    今天在使用idea做练习时,某个jsp页面报错如下: '<>'operator is not allowed for source level below 1.7 出错代码如下: Map& ...