zoukankan      html  css  js  c++  java
  • 第二部分_搭建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 Filesapache-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	estWebRoot" 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
    {
    	
    
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException
    	{
    		process(req,resp);
    	}
    	
    	@Override
    	protected 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。 
  • 相关阅读:
    FreeRTOS 移植到WIN10
    Keil debug command SAVE 命令保存文件的解析
    VS2017 编译 Visual Leak Detector + VLD 使用示例
    LaTeX 中插入GIF图片
    VS2017 + Qt5 + OpenCV400 环境配置
    记一次C++编程引用obj文件作为静态库文件
    Qt 多语言支持
    vscode 解决符号无法识别的问题
    带FIFO的UART数据接收
    MySQL Connector/Python 接口 (三)
  • 原文地址:https://www.cnblogs.com/Code-Rush/p/4615056.html
Copyright © 2011-2022 走看看