写在最前面

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

  我们想用的包括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. 怎样在 fedora 28 上 打开 .jnlp 文件

    最近使用 iDrac 和 iLO 总是会使用到 .jnlp 文件, 为了方便,今天把设置过程记录下来. JNLP 文件,全名为 Java Network Launching Protocol 文件, ...

  2. Configure network bonding on RHEL (Red Hat Enterprise Linux)

    Question: Recently I have to use the RHEL and need to config the network with a few NICs. Here comes ...

  3. mySQL 约束 (Constraints)

    约束用于限制加入表的数据的类型: 1.创建表时规定约束(通过 CREATE TABLE 语句) 2.表创建之后也可以(通过 ALTER TABLE 语句). 约束类型: NOT NULL(非空) UN ...

  4. Hexo搭建博客笔记

    Hexo搭建(建议看ppt:https://files.cnblogs.com/files/-SANG/%E4%BD%A0%E7%9A%84%E7%8C%AB.pptx ) 安装Git https:/ ...

  5. vue2.0路由切换后页面滚动位置不变BUG

    最近项目中遇到这样一个问题,vue切换路由,页面到顶端的滚动距离仍会保持不变.  方法一: 监听路由 // app.vue export default { watch:{ '$route':func ...

  6. mapreduce设置setMapOutputKeyClass与setMapOutputValueClass原因

    一般的mapreduce的wordcount程序如下: public class WcMapper extends Mapper<LongWritable, Text, Text, LongWr ...

  7. php实现链表的基本操作

    <?php class node{ private $value; private $next; public function __construct($value=0,$next=null) ...

  8. 打印lua中全局变量的一段代码

    function printTableItem(k, v, level) , level do io.write(" ") end io.write(tostring(k), &q ...

  9. Qt5中运行后台网络读取线程与主UI线程互交

    项目中有一个需求就是,因为需要请求服务端数据,因为网络的读取会阻塞,所以该过程不能放在Qt中的UI主线程当中,需要用一个后台线程来读取数据,数据准备完毕后 在通过Qt5中的信号槽机制来跨线程的传递数据 ...

  10. cloudstack secondary vm starting

    等1个小时,差不多可以进入虚拟机,看日志/var/log/cloud.log