使用Intellij idea新建Java Web项目(servlet) 原理及初步使用

准备

      1. JDK       (配置JDK_HOME\bin   和 CLASSPATH)   注:JDK8下载已经须要注册了,请使用JDK11(如今是官方长期支持的版本)     对于咱们新手来讲,JDK11的门槛更多在于:JDK9以来更新的module管理。 可是对module配置方面陌生不该该是守旧的缘由,请看: JDK8过渡到JDK11
      2. Tomcat  (须要配置CATALINA_HOME,并为servlet配置CLASSPATH   %CATALINA_HOME%\lib\servlet-api.jar)

             有关环境配置的知识:   JAVA SE11环境变量配置(Windows)        Java中设置环境变量CLASSPATH的意义html

      3. 熟悉IDEA最基本操做: IDEA为新手专业打造前端

      4. HttpServlet 详解(基础) 

 遇到的坑: 

三 级标题

四 级标题java

  1. Java Web项目中解决中文乱码方法总结 
  2. IDEA 在同一目录建立多个项目
  3. 解决 IDEA 部署 Tomcat 时,输出路径没有静态资源 :idea输出文件夹没有jsp页面
  4. servlet的url-pattern匹配规则详细描述

 

原理了解

      1. HTTP协议详解 - 小坦克 - 博客园   (建议看完他的HTTP专题)    [get是requset的一种]node

        Python | 解析pcap文件分析HTTP Request/Response报文 | 小武的博客

        nginx

      2. HTML from 表单提交请求到servlet 实例git

        Http响应Response详解 - 勇敢的心 - CSDN博客github

                       利用HTML的表单get提交功能,后台Servlet处理request / response    web

                           [response就是平时HTTP把html文件“送”到浏览器的方式ajax

        抓包中看到的各类元素数据库

        servlet的本质是什么,它是如何工做的? - 知乎

      3. JSP与servlet的关系:javaweb学习总结(十四)——JSP原理

                既然开发Java Web项目,那就默认会HTML开发了

      4. JSON教程导读

                      事实上关于网页的语言学习均可以看一下国内两个W3cschool网站

 若是想抓包一下,能够用现代浏览器如Chrome Firefox打开一个网页,而后F12开发者工具 - NetWork 勾上“”Preserve log”,F5刷新一下,能够看到一堆文件,随便点一个,点击Header或Response

 


 

开始

首先按以下方法建立JavaEE Web Application项目

Intellij idea建立javaWeb以及Servlet简单实现 - yhao2014的专栏 - CSDN博客

Ps.记得让防火墙放过IntelliJ idea,Idea的代码提示错误是在右侧边栏,没有窗口的...

(若是Application Server选项里没有Tomcat,能够点击旁边的NEW   选择Tomcat Server,而后JIDEA会自动识别你的环境变量)

 附:Tomcat 9.0.X 控制台乱码最优解决方案

 

而后开始代码实现

 若是只改动了资源文件,须要刷新Tomcat

 

 

 在InteliJ Idea里运行Servlet有个坑,

事实上调试栏上的开始是使用Tomcat 8080端口,这个会使得web.xml生效

而浏览器那一栏是单元测试,是用来测试网页的,修改html后刷新就会生效,和Tomcat无关。默认是使用InteliJ Idea的服务器,不会使用你的web.xml.........

(建议,网页编辑部分用VSCode+Live Server插件,保存便可自动刷新预览) 

 

Ps. 若是修改了 web.xml ,则须要Redeploy从新部署    (直接Update classes and resources是没用的,毕竟Tomcat说了算)

 

 

另外,我作了一个示例(JDK11 Tomcat9)

 

度盘连接: https://pan.baidu.com/s/1smw_cTgQXvV8NkB9HaHtOQ

(因为过小,放github浪费,就丢网盘了)提取码: tasz

稍微深刻地理解一下Servlet:Java Web(一) Servlet详解!!   [很是重要]

 

 

 

若是看不懂,请看此处解释:

 

其实就是利用HTML的<form>表单功能: 填写完HTML表单点击“登陆”或“取消”(其实我偷懒,因此取消和登陆功能写同样了) 而后就会触发表单的submit,这时通知浏览器发送表单内容 其实就是使用表单指定的方法(这里是GET)发送,其实和你直接浏览器访问 http://localhost/Login?username=a&password=2 是同样的 而后做为 实现了Servlet和Web等功能的服务器Tomcat,Tomcat 就会按照WEB.xml里描述的去拦截Login这个路径并转由 LoginServlet 这个类处理,这样就使得LoginServlet类并启动并执行。 以后LoginServlet类就接收Request,根据函数体定义处理,最后发回Response 而后浏览器收到了Response 注:Response能够是一个HTML资源,也能够是其余的,最后浏览器根据Response来生成并显示网页内容

 

 

 

 


逐渐增长功能

 

1, 使用AJAX技术动态加载内容

我参考了:http://www.w3school.com.cn/ajax/index.asp  短短几页,请务必看完

固然,目前还有一种新技术Fetch能够用

 1 function loadXMLDoc() {  2     var xmlhttp = new XMLHttpRequest();  3     console.log("Good");  4     xmlhttp.open("GET","Login?username=Bill&passwd=jkkdsf",true);  5  xmlhttp.send();  6 
 7     xmlhttp.onreadystatechange=function() {         /*必须先判断状态*/
 8         if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {  9             document.getElementById("datalist").innerHTML = xmlhttp.responseText; 10  } 11  } 12 
13 }
ajax-demo.js
<!-- </form>标签后面 -->

        <div id="datalist"></div>


<!-- JS部分放在后面,便于页面内容更快加载展现 -->
    <script src="script/ajax-demo.js"></script>


<!--- </body>以前 -->
index.html改动部分

因为JS里的get内容是错误的用户名密码,因此LoginServlet类会转发LoginError.html的全部内容到浏览器,

而后JS把response的Text内容都写到id为datalist的元素里

效果(很是粗暴的把LoginError.html所有加载进来了,可是去掉了一些html标签,我猜想是 浏览器自动去掉的)


 

 

因而可知,咱们能够轻轻松松地用 JDBC  Servlet  AJAX 来作一个动态加载数据库内容的Java Web项目

 稍微深刻理解一下Servlet

 

 

安全方面(web.xml分角色权限)

java - 使用一个JDBC领域,Glassfish 3安全- 基于表单 认证

使用JDBC读写数据库与网页交互

jsp+servlet+jdbc实现表单提交

JSP+Servlet+JDBC+MySQL实现表单生成 

将JDBC ResultSet解析为JSON格式

 

因为我要作管理员界面,因此不考虑SEO,所以所有先后端分离

 

 关于先后端分离:JavaWeb项目为何咱们要放弃jsp?为何要先后端解耦?为何要先后端分离?2.0版,为分布式架构打基础。

先后端分离后对http地址路径的处理:用nginx的反向代理机制解决前端跨域问题

 


 

资料区

很是好很是基础的JavaWeb入门教程(Servlet JSP SSH SSM都讲到了):https://skyline75489.github.io/Heart-First-JavaWeb/

经过浏览器打开网页的底层故事:What-happens-when 的中文翻译

JS函数式编程学习:https://skyline75489.github.io/learnrx-zh-cn/

 

AJAX读取JSON的思路和AJAX读取XML差很少
[感想]原来XML和HTML相近的好处:用JS处理时,调用方法同样 如getElementsByTagName("TITLE");

 


 

[计划(不存在的,永久搁置)]

        1. 初步先后端分离,利用JSON传递内容,js处理JSON并修改HTML    (JSON是传递数据的一种格式,比XML简洁高效)
        2. 再继续分离,静态页面交给Nginx(性能好),动态交给Tomcat。    [这个只要让Nginx指定某个路径交给Tomcat就行,权限方面由web.xml配置控制]
        3. 单点登陆SSO
        4. 后续会逐步采用Maven、SSM+SpringBoot
        5. 甚至使用nodejs / node-fetch处理JSON

 <待写内容>

      介绍MVC等抽象模型概念 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM

  框架 架构 设计模式的区别:  架构、框架和设计模式关系

    【架构】 简单的说架构就是一个蓝图,是一种设计方案,将客户的不一样需求抽象成为抽象组件,而且可以描述这些抽象组件之间的通讯和调用。

       【框架】 软件框架是项目软件开发过程当中提取特定领域软件的共性部分造成的体系结构,不一样领域的软件项目有着不一样的框架类型。框架不是现成可用的应用系统。而是一个半成品,提供了诸多服务,开发人员进行二次开发,实现具体功能的应用系统。

      【设计模式】 是一套被反复使用、多数人知晓的、通过分类编目的、代码设计经验的总结,它强调的是一个设计问题的解决方法。
-------------   lfsf802

 

JSON

 

 

<待了解概念>

Java设计模式

 

设计模式

相关文章
相关标签/搜索