第二部分_搭建Java Web开发环境与配置Tomcat服务器JSP详解

MyEclipse集成Tomcat

  • 首先配置Tomcat,即配置环境变量Java_HOME、path,在第一讲中已经完成了,不再赘述。
  • Eclipse代码风格导入MyEclipse:
    • 每个项目都要配置一次代码风格,文字大小,快捷键等等比较麻烦,可以用File下面的导入、导出功能。比如Eclipse下的File->General->Preferences->export all,生成一个*.epf文件,然后用MyEclipse中的File->import->General->Preferences,选择刚刚导出的epf文件import all即可。
  • 打开MyEclipse,在Window->Preferences->MyEclipse->Servers,选择Tomcat 6.x,将Tomcat home directory设置为Tomcat的根目录(比如我这里是D:\Program Files\apache-tomcat-6.0.44,顺便提一下,我本来装的最新版8.0.9,可是不知道如何集成到MyEclipse中,因为MyEclipse(我的是8.5版)里面只有Tomcat 4/5/6这几个选项,因此不得不到Apache Tomcat主页下载6.0版的Tomcat),将Tomcat sever下面的单选按钮选为Enable,确定。
  • MyEclipse中,Window->Preferences->Java->Installed JREs,Add一个Standard VM,在JRE home中键入本机Java的安装目录,回到刚才的Installed JREs目录,选择刚刚add的JRE,不要使用MyEclipse自带的,另外这里之所以要选择JRE,是因为Tomcat本身就是Java写的,要有Java运行时环境才能跑起来。接下来,回到Tomcat 6.x,将JDK选为刚刚添加的那个。

配置完成后,在MyEclipse的右上角有一个名为Open Perspective,点击,选择MyEclipse Java Enterprise,然后MyEclipse中上部有个名为Run/Stop/Restart MyEclipse Servers的图标,点击选择启动Tomcat 6.x。而后在浏览器地址栏中输入localhost:8080,出现Apache Tomcat的主页,即为配置成功。

使用Eclipse结合Tomcat开发一个简单的Servlet和JSP

Servlet是Java服务器端编程,不同于我们之前写的一般的Java应用程序,Servlet程序是运行在服务器上的,服务器有很多种,这里我们使用的是Tomcat。

  • 首先建立项目:

  File->New->Web Project,项目命名为test,J2EE Specification Level 选择Java EE 5.0,确定。到硬盘上找到test文件夹,打开WebRoot,打开WEB-INF,里面有三个文件classes,lib,web.xml,其中classes用来放置Java编译好的问价,lib是项目依赖的第三方JAR,web.xml是项目的部署描述符。

其次,想要项目放到Tomcat里运行,必须告诉Tomcat项目在什么地方:

  进入Tomcat的安装目录,打开conf目录,打开server.xml,通过对这个文件进行相关的设置,Tomcat就可以找到我们的项目,在最后面几行的</Host>标签之前添加信息:

<Context path="/test" docBase="D:\JavaWeb\test\WebRoot" reloadable="true"/>

其中Context是上下文的意思,Tomcat服务器中可以配置多个上下文,每个上下文对应一个Web应用;docBase是项目下面的WebRoot目录,path是逻辑上的虚拟路径(注意这里的test和项目的test虽然名字一样,但是它们之间没有任何关系,你也可以把path改成"/abc"等),映射到docBase;reloadable表示是否可以重新加载。

  接下来在MyEclipse中重新启动Tomcat,浏览器地址栏键入localhost:8080/test,显示This is my JSP page,说明刚才的配置成功。

  • 然后,我们使用Servlet生成一个静态页面:

  在src目录下新建一个包,命名为com.test.servlet;在新建的包下面新建一个类MyServlet,该类需要继承HttpServlet类(一般来说,Servlet都需要继承此类)。类的实现如下:

package com.test.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet
{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{process(req,resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{process(req, resp);}protected void process(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{resp.setContentType("text/html");PrintWriter out = resp.getWriter();out.println("<HTML><HEAD><TITLE>My First Servlet</TITLE></HEAD>");out.println("<BODY>");out.println("<H1>Hello World</H1>");out.println("</BODY></HTML>");}}

接着在MyEclipse中配置Web-INF目录下的web.xml,打开在左下角选择source,删掉:

<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>

在</web-app>前面添加:

<servlet><servlet-name>MyServlet</servlet-name><servlet-class>com.test.servlet.MyServlet</servlet-class>
</servlet><servlet-mapping><servlet-name>MyServlet</servlet-name><url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

重启Tomcat,浏览器访问http://localhost:8080/test/MyServlet,出现"Hello World"即为成功。

在程序中对process方法稍作修改,打印系统当前时间:

protected void process(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException{resp.setContentType("text/html");PrintWriter out = resp.getWriter();out.println("<HTML><HEAD><TITLE>My First Servlet</TITLE></HEAD>");out.println("<BODY>");out.println("<H1>Hello World</H1>");out.println("<br>" + new java.util.Date().toLocaleString());out.println("</BODY></HTML>");}

刷新浏览器的http://localhost:8080/test/MyServlet页面即可。

当然我们也可以在Console中打印系统时间,在刚刚添加的哪行语句下面,添加:

System.out.println("当前系统时间为:"+ new java.util.Date().toLocaleString());

然后在浏览器中刷新页面几次,Console中也相应的打印出系统时间几次。

  • 最后我们分析一下Servlet是如何执行的?我们为什么要在web.xml中添加上述的代码呢?一是告诉客户端,二是告诉Tomcat如何找我的资源,寻找的规则是:在servlet-mapping中根据url-pattern(其中'/'表示当前系统的根路径(这里是test)),找到servlet-name,然后在servlet中找跟他匹配的servlet-name,然后找到相应的servlet-class,如果发现其没有实例化,就实例化它(其中的doGet处理客户端的GET请求,doPost处理客户端的POST请求,而通过浏览器访问时全部使用的GET请求),立刻执行其doGet方法,doGet方法本身调用了process方法,执行后,服务器返回的HTML信息如下:
<HTML><HEAD><TITLE>My First Servlet</TITLE></HEAD>
<BODY>
<H1>Hello World</H1>
<br>2015-7-2 9:28:13
</BODY></HTML>

浏览器解释HTML,显示出"

Hello World

2015-7-2 9:28:13"

这样的结果。

需要注意的几点:

  • servlet-mapping元素中的servlet-name必须和servlet元素中的servlet-name匹配,这是由它的寻找规则决定的。
  • servlet元素中的servlet-class必须是包名+类名。
  • url-pattern前面以'/'开头,表示客户端以什么样的url格式请求servlet,也可以改成"/abc",这样在浏览其中需要访问http://localhost:8080/test/abc。 

转载于:https://www.cnblogs.com/Code-Rush/p/4615056.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

波士顿动力机器狗量产版首次亮相:先造100台,能当警犬能工地巡逻

来源&#xff1a;量子位摘要&#xff1a;波士顿动力的机器狗Spot Mini终于要量产了&#xff01;在科技媒体TechCrunch举办的“机器人AI”讨论会上&#xff0c;波士顿动力CEO Marc Raibert首次展示了它的量产版&#xff0c;还说今年7月或8月先量产100台。至于价格嘛&#xff0c;…

[MATLAB]中meshgrid函数的用法与实践(学习笔记)

今天在看点目标成像仿真程序的时候&#xff0c;看到了meshgrid函数&#xff0c;看了matlab的帮助文档后理解了一点&#xff0c;特此记录学习过程。 目录一、meshgrid函数二、举例验证三、创建二维网格绘制曲面图四、总结五、meshgrid函数源代码&#xff08;仅供参考&#xff09…

死猪脑”能复活吗?---评美国耶鲁大学医学院实验研究

来源&#xff1a;科学网博客4月17日&#xff0c;英国《自然》杂志刊发了科学家对于“复活”死猪脑的尝试&#xff1a;美国耶鲁大学医学院的研究团队将已经死亡4小时的猪脑接入新开发的BrainEX体外灌注系统&#xff0c;用正常体温下的模拟脉动血流进行灌注。6个小时灌注期内&…

Android开发(六)——组件颜色Selector(Selector与Shape的基本用法 )

andorid控件改变状态时改变颜色&#xff0c;使用selector。 <?xml version"1.0" encoding"utf-8" ?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><!-- 默认时的背景图片--><item android:dra…

22页PPT告诉你5G产业最新投资机会!

来源&#xff1a;全球物联网观察随着5G与下游产业联动和协作相继深入&#xff0c;十万亿级规模5G大生态终将形成。5G产业链将推动四大变革&#xff1a;软件化、超高频大宽带、物联网化、高集成度。同时&#xff0c;5G也将成就边缘计算&#xff0c;进而推动云计算市场加速发展。…

数据库事务(Database Transaction)

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务由事务开始(begin transaction)和事务结束(commit transaction或 rollback transaction)之间执行的全体操作组成&#xff0c;通常由高级数据库操纵语言或编程语言&#xff08;如SQL&#xf…

报告解读 | 实现智能制造的五大关键环节和四大赋能路径

来源&#xff1a;阿里研究院近年来&#xff0c;随着大数据、云计算、人工智能、工业互联网等技术的迅速发展&#xff0c;数字化技术被广泛应用于经济的各个环节&#xff0c;推动了新消费时代的到来。个性化、定制化的消费观越来越普遍&#xff0c;重塑了生产者和消费者之间的关…

[转载] 一致性哈希

转载自http://www.jiacheo.org/blog/174 学习分布式, 一致性哈希是最最基础的知识, 所以要理解好. 那什么是一致性哈希呢?(what) 百度百科 上的解释很专业术语. 要一句话定义貌似也有难度: 一致性哈希算法是在哈希算法基础上&#xff0c;提出的在动态变化的分布式环境中&#…

NB-IoT,你真是太让我失望了

来源&#xff1a;EET电子工程专辑摘要&#xff1a;根据IHS Markit预测&#xff0c;2019年&#xff0c;在所有低功耗广域网公用网络中&#xff0c;超过40%都有望使用基于LoRa的设备&#xff0c;这意味着LoRa有望在今年成为主导型的LPWAN解决方案。那么“老对手”NB-IoT呢?“NB-…

重命名myclipse中web项目名称的过程

1 打开 myclipse2 最顶层项目上右键&#xff0c;Refactor&#xff0c;新名&#xff0c;3 最顶层项目上右键&#xff0c;propterties, MyEclipse, Web, context-root: /新名4 替换 .css, .js, .jsp 中全部的 "/旧名/"5 修改apache的配置&#xff0c; /etc/httpd/conf/…

深度学习详解

来源&#xff1a;传感器技术人工智能&#xff0c;就像长生不老和星际漫游一样&#xff0c;是人类最美好的梦想之一。虽然计算机技术已经取得了长足的进步&#xff0c;但是到目前为止&#xff0c;还没有一台电脑能产生“自我”的意识。但是自 2006 年以来&#xff0c;机器学习领…

Dijkstra 算法

package dijkstra;import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set;public class Dijkstra {public static int U 99999999; // 此路不通static class Path2Len {public List<Integer> shortPath;public int short…

CSS-Transform-transition-Animation

Transform 根据我的理解&#xff0c;transform和width、height、background一样&#xff0c;都是dom的属性&#xff0c;不同的是它是css3旗下的&#xff0c;比较屌&#xff0c;能够对原来的dom元素进行移动、缩放、转动、拉长或拉伸&#xff0c;跟canvas上的某些api神似&#x…

Nature今发表脑机接口领域重大突破:

来源&#xff1a;学术经纬摘要&#xff1a;将计算机连通人脑&#xff0c;直接读取意识&#xff0c;这不是科幻。顶尖学术期刊《自然》刚刚在线发表的一项工作就在脑机接口领域向前迈出了一大步。加州大学旧金山分校&#xff08;UCSF&#xff09;的神经外科学家Edward Chang教授…

C语言中的自定义类型

C语言中的自定义类型 &#xff08;一&#xff09;结构体 结构体的声明 结构体是一些值的集合&#xff0c;这些值称为成员变量&#xff0c;结构体的成员可以是不同类型的变量&#xff1b;结构体的声明 struct tag { member-list; }variable-list;特殊声明 在声明结构体的时候…

2019版中国数字经济发展与就业白皮书

未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云…

文件即子文件删除

先简单说明一些基本&#xff1a;&#xff08;下面所说的文件夹也就是目录&#xff0c;我个人一开始不知道目录是什么&#xff0c;后来才知道目录就是文件夹&#xff09;。 1.首先介绍delete()方法的基本用法。 先创建一个File对象 &#xff0c;例如&#xff1a; File file new…

深入卷积神经网络背后的数学原理

来源&#xff1a;AI科技大本营摘要&#xff1a;在计算机神经视觉技术的发展过程中&#xff0c;卷积神经网络成为了其中的重要组成部分&#xff0c;本文对卷积神经网络的数学原理进行了介绍。文章包括四个主要内容&#xff1a;卷积、卷积层、池化层以及卷积神经网络中的反向传播…

Linux学习之如何在物理机上安装Linux发行版

Linux学习之如何在物理机上安装Linux发行版 第一步&#xff1a;制作系统安装盘 准备一个至少8GB的空白U盘。下载启动盘制作工具Rufus&#xff0c;下载链接&#xff1a;https://pan.baidu.com/s/1CU8oZJVyCgdwETI2VxJwxA 提取码&#xff1a;gwi1下载Linux发行版安装镜像&#…

jQuery Easy UI Accordion(可伸缩的面板)包

Accordion 可伸缩的面板组件。基于panel,示为以下的比率&#xff1a; <!doctype html> <html lang"en"><head><meta charset"UTF-8"><script type"text/javascript" src"easyui/jquery.min.js"></sc…