从零开始学JavaWeb
引言
记得上学时,有位导师说过一句很经典的话:"编程语言只是工具,最重要的是掌握思想。"
笔者一直主要从事.net领域的开发工作。随着工作阅历的丰富,越来越深刻的理解当年导师说的那句话的意义。
"他山之石,可以攻玉",相互借鉴,然后为我所用,无疑是一种开放的态度。
一、基本目标
同.net开发环境的搭建相比,javaweb开发环境的配置可谓相当"繁琐",所以这里会觉得微软Visual Studio IDE的强大。
本文是javaweb学习实践的一次较为详细的记录,希望能够对初学者带来一点帮助,少走弯路。
二、环境搭建
Javaweb开发环境的搭建,笔者选择的IDE是IntelliJ IDEA(ideaIU-2016.3.4).安装 包括以下几点:
- IDEA 安装
- JDK安装和配置
- appache-tomcat的配置
- IDEA 构建Maven
1.IDEA 安装
2.JDK安装和配置
JDK 8安装包
安装完JDK后配置环境变量 计算机→属性→高级系统设置→高级→环境变量
系统变量→新建 JAVA_HOME 变量
变量值填写jdk的安装目录(本人是 C:\Program Files\Java\jdk1.8.0_60)
系统变量→寻找 Path 变量→编辑
在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)
系统变量→新建 CLASSPATH 变量
变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)
检验是否配置成功 运行cmd 输入 java -version (java 和 -version 之间有空格)
若如图所示 显示版本信息 则说明安装和配置成功。
3.appache-tomcat的配置
apache-tomcat-8.0.41
配置Tomcat环境变量
计算机→属性→高级系统设置→高级→环境变量
在系统变量中添加以下变量
1)新建TOMCAT_HOME变量
变量名:TOMCAT_HOME
变量值:F:\JavaSoftwares\tomcat\apache-tomcat-8.0.41
2)新建CATALINA_HOME变量
变量名CATALINA_HOME
变量值F:\JavaSoftwares\tomcat\apache-tomcat-8.0.41
3)修改变量Path
在系统变量中找到Path变量名,双击或点击编辑,在末尾添加如下内容
;%CATALINA_HOME%\bin;%CATALINA_HOME%\lib
这里要注意,各个变量值之间一定要用;分隔。
4)启动Tomcat服务器
在cmd命令窗口下输入startup回车,运行如下图所示
5)测试Tomcat服务器是否安装成功
在浏览器中输入http://localhost:8080或http://127.0.0.1:8080
三、创建JavaWeb Maven项目
1.maven配置
1)下载 Apache Maven 3.3.9
其中包含针对不同平台的各种版本的Maven下载文件。
2)解压maven压缩包. 我解压的路径为:D:\Maven\apache-maven-3.3.9
3)配置maven的环境变量
右键“计算机”,选择“属性”,之后点击“高级系统设置”,点击“环境变量”,来设置环境变量,有以下系统变量需要配置:
新建系统变量: MAVEN_HOME 变量值:E:\Maven\apache-maven-3.3.9
编辑系统变量 Path
添加变量值: ;%MAVEN_HOME%\bin
4)检测是否安装成功
最后检验配置是否成功:用win键+R,来打开命令行提示符窗口,即Dos界面,输入mvn --version 若出现以下情况说明配置成功
2.idea配置JDK
IDEA配置JDK
打开IDEA IDE
依次点开File -->ProjectStructure,点击左侧标签页,点击SDKs
点击+号,选SDK
在弹出框选择jdk路径(我本地C:\Program Files\Java\jdk1.8.0_60)
点击OK,可以看到jdk配置好了
3.idea构建Maven
如上maven已经下载并解压到本机(我本地D:\Maven\apache-maven-3.3.9)
1) 找到/conf/setting.xml文件,用文本编辑器打开。由于Maven远程仓库在国外,所以在下载相关jar包时非常慢,将其配置为Alibaba的仓库,需添加下面代码:
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>uk</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://uk.maven.org/maven2/</url>
</mirror>
<mirror>
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<!-- <url>http://192.168.1.100:8081/nexus/content/groups/public/</url>-->
<url>http://repo.maven.apache.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
2)配置 IDEA默认设置
此处解决了『maven骨架生成项目速度慢的令人发指,都在Generating project in Batch mode等待,Idea状态显示栏还在不行runing,并没有卡死。查看debug信息发现,是maven获取archetype-catalog.xml导致。』的问题。
3)新建项目
注意:要选maven-archetype-webapp,而不是cocoon-22-archetype-webapp
4)配置tomcat
4.配置tomcat
配置tomcat
在主页面打开ProjectStructure,点击图示的按钮或是按ctrl+shift+alt+s快捷键。
打开ProjectStructure后,按照图示依次点击Facets->+号,在弹出的对话框个中选择Web.
在弹出的对话框选择刚才创建的Maven项目(MavenDemo),点击ok.
接着会出现图示的结构,点击Deployment Descriptors 对话框右侧的加号,会弹出一个图示的小对话框,选择web.xml所在的路径,点击Ok。
再次点击Web Resource Directories对话框右侧的加号,会弹出一个图示的小对话框,选择webapp所在的路径,点击Ok。
再次回到Project Structure,点击左侧 Artifacts,依次点击+号->Web Application:Exploded->From Modules.
出现下图的对话框,点击Ok即可。
接下来开始配置Tomcat。然后在右上角点击那个下拉框,再点击Edit Configurations
接着回到Server选项卡,配置一下Tomcat的基本参数,最后点击Ok即可
四、调试
以上已经完整地创建了一个maven架构的webapp
效果如下:
五、总结
总的来说,第一次使用感觉很繁琐.
这篇算是为JavaWeb之旅开个头.后续会逐渐深入.
从零开始学JavaWeb的更多相关文章
- 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)
Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...
- 从零开始学 Java - Spring 集成 ActiveMQ 配置(一)
你家小区下面有没有快递柜 近两年来,我们收取快递的方式好像变了,变得我们其实并不需要见到快递小哥也能拿到自己的快递了.对,我说的就是类似快递柜.菜鸟驿站这类的代收点的出现,把我们原来快递小哥必须拿着快 ...
- 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)
硬盘和内存的作用是什么 硬盘的作用毫无疑问我们大家都清楚,不就是用来存储数据文件的么?如照片.视频.各种文档或等等,肯定也有你喜欢的某位岛国老师的动作片,这个时候无论我们电脑是否关机重启它们永远在那里 ...
- 从零开始学 Java - 我放弃了 .NET ?
这不是一篇引起战争的文章 毫无疑问,我之前是一名在微软温暖怀抱下干了近三年的 .NET 开发者,为什么要牛(sha)X一样去搞 Java 呢?因为我喜欢 iOS 阿!哈哈,开个玩笑.其实,开始学 Ja ...
- 从零开始学 Java - Spring 集成 ActiveMQ 配置(二)
从上一篇开始说起 上一篇从零开始学 Java - Spring 集成 ActiveMQ 配置(一)文章中讲了我关于消息队列的思考过程,现在这一篇会讲到 ActivMQ 与 Spring 框架的整合配置 ...
- 从零开始学Python07作业思路:模拟人生小游戏
标签(空格分隔): 从零开始学Python 一,作业说明 模拟人生: 1 定义三个人物,屌丝John,美女Liz,高富帅Peter. John和Liz大学时是恋人,毕业工作后,Liz傍上了Peter, ...
- 从零开始学 Java - 利用 Nginx 负载均衡实现 Web 服务器更新不影响访问
还记得那些美妙的夜晚吗 你洗洗打算看一个小电影就睡了,这个时候突然想起来今天晚上是服务器更新的日子,你要在凌晨时分去把最新的代码更新到服务器,以保证明天大家一觉醒来打开网站,发现昨天的 Bug 都不见 ...
- 从零开始学 Java - log4j 项目中的详细配置
你还会用笔来写字么 我是不怎么会了,有时候老是拿起笔之后不知道这个字怎么写,这时候就会拿起手机去打出来:有时候还会写出来这个字之后越看越不像,这时候就开始怀疑自己的能力了:有时候写出来了一大堆字之后, ...
- 从零开始学 Java - Spring 支持 CORS 请求踩的坑
谁没掉进过几个大坑 记得好久之前,总能时不时在某个地方看到一些标语,往往都是上面一个伟人的头像,然后不管是不是他说的话,下面总是有看起来很政治正确且没卵用的屁话,我活到目前为止,最令我笑的肚子痛得是下 ...
随机推荐
- PHP安全编程
转自:http://www.nowamagic.net/librarys/veda/detail/2076 1.关闭register_globals,以提高安全性 2.在部署环境,不要让不相关的人 ...
- JDBC 的编程步骤
1.加载数据库驱动 2.获得数据库连接 3.创建语句 4.执行查询 5.遍历结果集 6.关闭数据库连接 尽量把数据库的连接步骤写成一个单独的java类,使用的时候直接new一个对象, import j ...
- thinkjs之页面跳转
对于刚入手thinkjs项目的新手来说,时常会犯的一个错误就是“混用”各种代码逻辑,比如:我们经常在做后台管理系统的时候用到的登录框,,其实它原本是有一个路由专门存放自己的代码逻辑,而在点击提交按钮的 ...
- javascript设计模式与开发实践阅读笔记(11)—— 模板方法模式
模板方法模式: 由两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类.通常在抽象父类中封装了子类的算法框架,包括实现一些公共方法以及封装子类中所有方法的执行顺序.子类通过继承这个抽象类,也继 ...
- js实现省市区联动
先来看看效果图吧,嘻嘻~~~~~~~~~~~~~~~~~~~· 代码在下面: 示例一: html: <!DOCTYPE html> <html> <head> &l ...
- fetch
1. 在order by fetch first中,所有的记录必须从磁盘取出来放入一个叫insert buffer的内部结构,然后进行排序,按照常识我们知道一般树排序的复杂度为O(nlogn), 最好 ...
- MySql学习(七) —— 查询性能优化 深入理解MySql如何执行查询
本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如何更改查询执行计划,当我们深入理解MySql如何真正地执行查询,明白高效和低效的真正含义,在实际应用中就能扬长避 ...
- 时间戳 获得当前时间 -iOS
//获取当前时间戳 static inline NSString * getTimeStamp(){ NSTimeInterval d=[[NSDate date] timeIntervalSince ...
- bootstrap - btn
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Hangfire 使用笔记
“巨人们”的地址 Hangfire Mysql: https://github.com/arnoldasgudas/Hangfire.MySqlStorage 在获取set表数据的sql语句有bug ...