您的位置:首页 > 其它

【Servlet】脱离IDE的Servlet实现

2016-07-08 16:23 375 查看
        在使用MyEclipse时候,右击“new”,选择”Servlet”就可以在项目中新建出servlet文件,相应地在工作空间目录以及tomcat文件夹中创建了对应.java和.class文件。然而通过脱离IDE环境,手动操作创建并运行servlet程序,会对原理更加明白。

【基本概念】

 1、工作空间

     这是代码保存的位置,仅仅是在打开IDE的时候,代码从这里的文件中调用而已。比如,在我的电脑中将我的小例子放到”D:\drptest”目录下,这就是工作空间。

 2、运行空间

      这是指java程序借助于web服务器运行的时候代码存放的地址,常用的web服务器有jboss,tomcat,以tomcat为例,将工作空间中的.java文件编译成.class之后,放到tomcat下,程序运行时,就会实例化这里的.class文件。

3、  Tomcat目录

      在tomcat文件夹下先介绍3个文件夹:

        (1)bin:这里存放了很多tomcat封装的批处理文件,例如启动tomcat服务的startup.bat,关闭tomcat服务shutdown.bat,查询jdk版本的version.bak等。

     (2)common:该文件夹下的lib目录中,有一些项目必备的jar包,就像Servlet-api.jar,我们写servlet类的时候,类似” importjavax.servlet.http.*;”就是指向这里。

     (3)webapps:这里是真正的运行空间,webapps下是具体的项目文件夹,这里以”test-servlet”为例,test-servlet下有html页面,以及WEB-INF文件,WEB-INF目录结构如下:

             


   

       1.Lib文件夹用于存放引用的第三方jar包,类似于jdbc.jar以及后面的Manager逻辑类的jar文件。

       2.classes文件夹用于存放编译之后的.class文件。

       3.web.xml是用来配置如何访问.class文件,从而通过html访问到该类。

       So,如果不使用ide环境,这些个文件夹的配置,就得自己来操作,很有意思,接着来。

 

【创建过程】

     (1)新建html和java文件

      在工作空间“D:\drptest”中新建一个login.html文件和一个LoginServlet.java文件,以“登录”为例:

      Html代码如下:
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="loginServlet">
用户:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
<body>
</html>

     对于form表单,默认以get形式发送请求,若以post形式发送请求,加入<method=”post”>即可。

 

     LoginServlet.java代码如下:
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, java.io.IOException{
//返回值为字符串,参数类型也为字符串
String username = request.getParameter("username");
String password = request.getParameter("password");

//将用户名和密码打印出来
System.out.println("username=" + username);
System.out.println("password=" + password);

//将信息返回到html页面当中,"text/html"是返回的格式,加入charset则是返回的编码方式
response.setContentType("text/html");
response.getWriter().println("Login Success!!!");
}
}

       该类中有两个必备的方法:doGet以及doPost,二者与html页面发送的get请求和post请求相对应。这里以doGet为例,登录成功返回”LoginSuccess!!!”内容。

 

(2)编译.java程序

       打开dos窗口并进入drptest目录,输入”javac LoginServlet.java”:

             


      如图,报错了,找不到HttpServlet,怎么回事?明明是在代码中import了这个类啊,原因在于没有将common文件夹下的lib里的 D:\apache-tomcat-5.5.26\common\lib\servlet-api.jar写到环境变量下的CLASSPATH当中。之后重新编译,仍然找不到ServletException和IOException,怎么办?添加引用哦~
import javax.servlet.*;
import java.io.*;
      之后,编译成功。在工作空间里生成了LoginServlet.class文件。
 
(3) 配置运行空间
       在tomcat的webapps文件夹下新建“test_servlet”文件夹,之后新建WEB-INF及其子文件夹。将login.html复制到test_servlet下。将编译生成的LoginServlet.class文件放到classes文件夹下。编写web.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
</web-app>

       其中,<servlet>和<servlet-mapping>中都有servlet-name,二者保持一样,名字自己起,<servlet-class>就是编译后的类名。<url-pattern>则为html访问时候的url地址。就像在html文件中form表单里所写的action=” loginServlet”一样。

 
(5)启动Tomcat
      在tomcat下的bin文件夹中,双击startup.bat文件用来手动启动tomcat服务器,dos窗口显示“setup successful!”之后即可。

 

(6)浏览器访问
      在地址栏中输入:http://localhost:8080/ test_servlet/loginServlet.html即可访问到不通过IDE部署在tomcat上的servlet程序。

      这样了解了tomcat的文件路径及作用,并手动启动tomcat服务之后,对于web服务器的大概操作流程就明白了,如果需要访问数据库,再在lib文件夹下引入jdbc的jar包和manager业务逻辑的jar包即可。

      下一篇博客,详细分析这个过程的调用流程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: