Ubuntu14.04搭建JSP与Servlet开发环境及其测试详解
一,搭建JDK开发环境
1,在Java官网下载Jdk软件包,我的系统是64位Ubuntu14.04,所以选择jdk-8u25-linux-x64.tar.gz。
2,解压Jdk软件包
tar xvzf jdk-8u25-linux-x64.tar.gz
3,使用管理员权限拷贝解压的文件夹到/usr/lib/jvm目录下,无需安装
sudo cp -r jdk1..0_25 /usr/lib/jvm/
4,设置环境变量,在/etc/profile的后面添加如下内容,然后输入 source /etc/profile,当然重启的话也会重新加载的
#set java environment
export JAVA_HOME=/usr/lib/jvm/jdk1..0_25
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=./:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
5,在shell中输入java -version,得到如下结果说明安装成功
注:后面在切换到root账户下时使用javac弹出openjdk未安装的错误提示,原因是前面设置的环境变量对root账户无效
6,下面设置root账户的环境变量,在/etc/environment文件中做如下修改
在$PATH末尾添加
:/usr/lib/jvm/jdk1.8.0_25/bin,如下所示:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk1./bin
在文件末尾加入第4步中的三条语句设置三个环境变量
export JAVA_HOME=/usr/lib/jvm/jdk1.
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=./:${JAVA_HOME}/lib:${JRE_HOME}/lib:/home/yxl/download/tomcat/lib/servlet-api.jar
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk1./bin
输入如下语句使修改的环境变量立即生效而不用重启
source /etc/environment
再次输入java -version,得到如下结果说明修改成功
注:关于修改环境变量的一个发现就是,虽然修改了/etc/profile和/etc/environment,在重启后重新登录bash时,对于 root账户该环境变量依然无效,可以利用source命令对配置文件进行更新,但是每次进入root账户都得这样太麻烦了,一个技巧就是将所有对环境变 量的修改添加到.bashrc文件中,这样在每次bash登录时就会自动加载了,一劳永逸。我的.bashrc文件末尾如下图所示,对于PATH采用的是具体路径指定,没有将$PATH本身作为右值的一部分,这样是为了避免重复。最后面的CATALINA_HOME环境变量是tomcat的安装路径:
export JAVA_HOME=/usr/lib/jvm/jdk1.
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=./:${JAVA_HOME}/lib:${JRE_HOME}/lib:/home/yxl/download/tomcat/lib/servlet-api.jar
export PATH=.:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk1./bin
export CATALINA_HOME=/home/yxl/download/tomcat/
二,安装JSP容器tomcat
tomcat可以与Apache共同搭建Web服务器,Apache负责静态HTML文件,tomcat负责解析JSP文件,也可以单独使用,这里为了学习JSP的开发,单纯使用tomcat就足够了。
1,从官网http://tomcat.apache.org/下载最新版的tomcat,现在的最新版为8.0
2,解压下载的软件包
tar xvzf apache-tomcat-8.0..tar.gz
3,进入解压文件下的bin目录,可执行文件startup.sh和shutdown.sh分别用于启动和关闭tomcat服务器。
4,启动后在浏览器中输入localhost:8080/,得到如下界面说明启动成功(tomcat默认使用8080端口),网页默认根目录位于解压文件下的:xxx/webapps/ROOT/index.html
5,测试JSP运行
在tomcat网页根目录webapps/ROOT/下新建test目录,并在test目录下新建如下JSP文件,命名为test.jsp
xxx/tomcat_install_dir/webapps/test/test.jsp
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>
在浏览器中输入localhost:8080/test/test.jsp,得到如下页面说明运行成功
三,搭建Servlet环境
1,修改环境变量CLASSPATH,在末尾添加servlet-api.jar的路径,CLASSPATH修改后的内容如下:(我的tomcat解压文件被重命名为tomcat,根据tomcat解压路径不同,添加的内容也不同)
如果不添加如上内容,不能正常编译Servlet类,编译时出现如下错误:
四,测试Servlet开发环境
1,Servlet开发简介
Servlet是运行在Web服务器上的Java程序,它读取浏览器发出的HTTP请求,生成结果,并向浏览器发送文档,一般是HTML格式。
Servlet开发时遵循一定的目录规则,在webapps下,我们新建自己开发用的项目文件夹xxx/tomcat/webapps/test,所有的文件都在该文件夹及其子目录下。为了能够正常运行Servlet程序,我们需要新建xxx/tomcat/webapps/test/WEB-INF子目录,在WEB-INF目录下新建xxx/tomcat/webapps/test/WEB-INF/classes子文件夹,用于存放我们编写的Servlet类的编译结果,为了方便,我们将编写的.java源程序也放在该目录下。在实际部署时,有多种方式,例如将生成的类打包成jar格式,那么jar格式的文档需要放置在另一个需要新建的子目录xxx/tomcat/webapps/test/lib下。
web.xml用于向Tomcat注册我们编写的Servlet类,可以将xxx/tomcat/webapps/ROOT/WEB-INF/web.xml拷贝到我们的xxx/tomcat/webapps/test/WEB-INF/目录下。web.xml示例代码及元素介绍见下一步。注意,如果没有此web.xml文件以及加入对应的类注册信息,在浏览器中输入URL后会出现404 NOT FOUND 错误。
2,测试不使用包的Servlet
示例代码:
a,xxx/tomcat/webapps/test/WEB-INF/classes/HelloServlet.java,编译后的文件为xxx/tomcat/webapps/test/classes/HelloServlet.class
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*; public class HelloServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head><title>head</title></head><body><h1>Hello Servlet</h1></body></html>");
}
}
b,xxx/tomcat/webapps/test/WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true"> <display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description> <servlet>
<servlet-name>Test1</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>Test1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping> </web-app>
代码解释:1-28行是头部和根元素,无需理会,30-38行是添加进去的类注册信息,servlet-name元素的值Test1任意命名,合法即可。servlet-class元素的值HelloServlet是类名,这个肯定不能错,url-pattern表示从浏览器中输入URL的格式,前面需要加上我们的项目文件夹的名称。完整的一个URL如下:
http://localhost:8080/test/servlet1
在初次开发的时候经常遇到的一个问题就是浏览器中输入URL后得到404错误,这时需要仔细检查下面几个方面,也是我已经犯过的错误:
关键字是否输入错误,例如servlet-pattern被我写成了servlet-patter,少一个,多一个字符都不行。
类名称,也就是servlet-class元素中的值是否正确。
url-pattern元素的值必须以“/”或者“*.”开头,有一次我将url-pattern的值赋成了servlet1,结果总是404错误,浪费了好几个小时来排错。
所有的注册信息都必须在<web-app>和</web-app>之间。
所有的元素必须成对存在,<servlet>必须以标签</servlet>结束,这也是xml文件的规则。
每次修改web.xml或者Servlet代码之后都需要重新启动Tomcat。
c,在浏览器中输入:http://localhost:8080/test/servlet1,不出意外的话得到如下结果,如果是404对这步骤b进行检查:
3,测试使用包的Servlet
相比不使用包的Servlet,多了两个变化,一个是需要新建一个子目录,名称就是包名,比如包名称为coreservlets,那么新建子目录为
xxx/tomcat/webapps/test/WEB-INF/classes/coreservlets。二是web.xml文件的servlet-class需要改成“包名.类名”,即多了一个点号,下面直接上代码。
a,xxx/tomcat/webapps/test/WEB-INF/classes/coreservlets/HelloServlet.java,编译后的结果为xxx/tomcat/webapps/test/WEB-INF/classes/coreservlets/HelloServlet.class
package coreservlets; import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*; public class HelloServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head><title>Hello</title></head><body><h1>Hello Servlet</h1>" +
"</body></html>");
}
}
b,xxx/tomcat/webapps/test/WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true"> <display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description> <servlet>
<servlet-name>Test1</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>Test2</servlet-name>
<servlet-class>coreservlets.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test2</servlet-name>
<url-pattern>/servlet2</url-pattern>
</servlet-mapping> </web-app>
为了节省篇幅,删掉了web.xml自带的注释。23-30行是我们为了coreservlets.HelloServlet添加的类注册信息,只是在servlet-class元素的值中加上了一个包名。
c,在浏览器中输入http://localhost:8080/test/servlet2,得到如下结果
呼,终于大功告成了,折腾了好久
Ubuntu14.04搭建JSP与Servlet开发环境及其测试详解的更多相关文章
- Ubuntu14.04搭建cocos2dx2.2.5开发环境(超级具体)
一 下载解压 官方下载地址:http://www.cocos2d-x.org/download 下载下来之后解压完毕之后会得到一个文件夹cocos2d-x-2.2.5 二 编译 1 安装依赖 cd到c ...
- Ubuntu 12.04搭建MTK 6577 安卓开发环境
Ubuntu 12.04搭建 MTK 6577安卓开发环境 1. 下载并安装Vmware虚拟机: 2. 下载并在虚拟机上安装Ubuntu 12.04 iso 安装包:下载地址: ...
- Ubuntu14.04安装pycharm用于Python开发环境部署,并且支持pycharm使用中文输入
一.目标 实现在Linux下用pycharm调试工具/Python开发 Linux使用vi/vim工具写Python,缺点:调试不方便,无代码提示.跳转等诸多功能. Windows使用idle/pyc ...
- Ubuntu14.04下完美安装cloudermanage多种方式(图文详解)(博主推荐)
说在前面的话 我的机器是总共4台,分别为ubuntucmbigdata1.ubuntucmbigdata2.ubuntucmbigdata3和ubuntucmbigdata4. ClouderaMan ...
- 在 IntelliJ IDEA 中配置 JSF 开发环境的入门详解
JSF 作为 JavaEE 官方标准,在了解并掌握其基本开发技术后,对于功能要求较高.业务流程复杂的各种现代 Web 应用程序开发将会成为非常合适且强大的高效率开发利器.JSF 的开发环境搭建涉及到在 ...
- IDEA里如何安装Python插件打造开发环境(图文详解)
前言 python是一种功能强大和适用面很广的开发语言,在大数据应用和机器学习日益流行的年代,python凭借其简洁.易用和可扩展性获得很多用户的支持,近年来使用率高速增长.python环境下,集成了 ...
- ubuntu14.04搭建Hadoop2.9.0集群(分布式)环境
本文进行操作的虚拟机是在伪分布式配置的基础上进行的,具体配置本文不再赘述,请参考本人博文:ubuntu14.04搭建Hadoop2.9.0伪分布式环境 本文主要参考 给力星的博文——Hadoop集群安 ...
- Ubuntu 14.04下搭建Node.js的开发环境
最近想找一个轻量级且支持快速开发的服务开发平台,选来选去选择了Node.js,当时有几种选择: Python + Django(用过Django,虽然开发快速,但是感觉性能并不太好). Ruby + ...
- 【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)
首先.在開始搭建MyEclipse的开发环境之前.还有三步工具的安装须要完毕,仅仅要在安装配置成功之后才干够进入以下的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官 ...
随机推荐
- 网神SecVSS 3600漏洞扫描系统
网神SecVSS 3600漏洞扫描系统严格按照计算机信息系统安全的国家标准.相关行业标准设计.编写.制造.网神SecVSS 3600漏洞扫描系统可以对不同操作系统下的计算机(在可扫描IP范围内)进行漏 ...
- JavaBean详解
JavaBean详解 我们对JavaBean的理解可以从java和bean两个方面来理解,对于Java我们都很清楚,而bean在计算机中的含义为可重用组件.(ps:对Spring中的bean是不是有了 ...
- PHP定界符<<<的使用方法
在web编程过程中难免会遇到用echo来输出大段的html和javascript脚本的情况,如果用传统的输出方法——按字符串输出的话,使用PHP肯定要有大量的转义符来对字符串中的引号''/" ...
- 安装node --- 与升级
1.安装node流程,请参照菜鸟教程的安装教程 http://www.runoob.com/nodejs/nodejs-install-setup.html 2.这里说一下踩的坑, 问题一.Win ...
- Python升级3.多
本文主要介绍在Linux(CentOS)下将Python的版本升级为3.6.2的方法 众所周知,在2020年python官方将不再支持2.7版本的python,所以使用3.x版本的python是必要的 ...
- bat批处理----set
转载自 https://www.cnblogs.com/Braveliu/p/5081084.html [1]set命令简介 set,设置. [2]set命令使用 1. 打印系统环境变量.set ...
- LeetCode Array Medium 11. Container With Most Water
Description Given n non-negative integers a1, a2, ..., an , where each represents a point at coordin ...
- 微信小程序的加载机制和运行机制
一.运行机制 冷启动指的是重新启动,热启动指的是5分钟内从后台切换到前台,只有冷启动才能加载最新的包. 小程序什么时候会关闭? 5min后台运行,连续收到两次(2s)系统告警. 二.加载机制 三.小程 ...
- ionic3 emoj表情包插件 emoji-picker
1.效果演示: 2.安装扩展包依赖 npm i @ionic-tools/emoji-picker --save 3.app.module.ts中导入插件 import { EmojiPickerMo ...
- Andoid之硬件访问服务1(让Andoid应用程序访问c库)
andoid 项目文件结构图 新建Hardcontrol.java package com.thisway.hardlibrary; public class HardControl { public ...