手动构建Servlet项目的流程
2015-11-22 19:41
471 查看
前面讨论过手动建立jsp的项目,jsp是tomcat服务器负责编译执行,所以配置相对简单,而Servlet需要先把java源文件编译成字节码class文件,然后再执行,所以需要servlet-api.jar这个包的支持,使用集成的开发环境时,IDE帮助我们做了一些事情,所以手动配置和IDE的原理是一样的,xml文件的编写方式也是一样的,下面就从头开始建立一个servlet的项目
首先在tomcat服务器目录下的webapps目录下新建一个目录作为项目目录,我建立的是MyFirstServlet,然后在这个目录下建立一个WEB-INF目录,这个和前面的一样,能直接通过浏览器访问的资源都要放在WEB-INF目录外面,而WEB-INF目录是无法通过浏览器进行访问的,然后在WEB-INF目录中建立classes和lib目录,lib目录是放相关类库的,classes目录就是servlet运行的目录,我们编写好的java源文件可以放到WEB-INF下,也可以自己定义一个存放源文件的目录,但是千万不要放在可以被访问到的地方,然后我们复制web.xml文件,放在WEB-INF目录下,这样我们的目录就部署完毕了,然后我们编写简单的servlet源文件,代码如下:
这个java源文件是不能直接用javac编译的,原因是因为我们没有添加servlet的jar包,有两种方法来配置编译环境
第一个方法是让之前配置过JDK去加载jar包进行编译,我们复制tomcat服务器目录下lib目录中的servlet-api.jar文件,复制到之前配置好的%JAVA_HOME%\jre\lib\ext\下,如下图:
第二种方法是,还可以在之前配置好的环境变量CLASSPATH最后追加servlet-api.jar的路径,比如我的是:;%CATALINA_HOME%\lib\servlet-api.jar,然后确定即可生效,这两种方法都可以,但是推荐第一种,因为jar包复制过去,以后服务器目录改变了也不影响
然后我们就可以直接编译java源文件了,我使用的编码是UTF-8的,所以用:javac -encoding utf-8 HelloServlet.java进行编译
那么编译成功,同目录下会出现一个HelloServlet.class的字节码文件,然后我们复制该文件到classes/servlet/下,就是路径要和package声明包的保持一致,然后配置web.xml文件,当然在Servlet3.0之后还可以用注解进行url配置,xml文件内容如下:
这里配置和2个url-pattern用任何一个都能访问,注意<servlet-class>的配置,要把包写完整,写好之后保存;然后启动tomcat,输入http://localhost:8080/MyFirstServlet/servlet/HelloServlet,访问就可以了
以上就是手动配置的过程,我们可以把IDE的项目手动的移植过来,也可以自由的配置JavaBean和其他的业务逻辑类等,只要原理明白了其他的就简单了,这样就不会出现只会使用IDE的被动,开发起来也更加灵活
首先在tomcat服务器目录下的webapps目录下新建一个目录作为项目目录,我建立的是MyFirstServlet,然后在这个目录下建立一个WEB-INF目录,这个和前面的一样,能直接通过浏览器访问的资源都要放在WEB-INF目录外面,而WEB-INF目录是无法通过浏览器进行访问的,然后在WEB-INF目录中建立classes和lib目录,lib目录是放相关类库的,classes目录就是servlet运行的目录,我们编写好的java源文件可以放到WEB-INF下,也可以自己定义一个存放源文件的目录,但是千万不要放在可以被访问到的地方,然后我们复制web.xml文件,放在WEB-INF目录下,这样我们的目录就部署完毕了,然后我们编写简单的servlet源文件,代码如下:
package 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; /* * 继承于Servlet */ public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("处理GET请求"); //获取输入 PrintWriter out = response.getWriter(); //指定输出文件类型和编码 response.setContentType("text/html; charset=utf-8"); //开始输出 out.println("<strong>Hello Servlet !!!</strong>"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
这个java源文件是不能直接用javac编译的,原因是因为我们没有添加servlet的jar包,有两种方法来配置编译环境
第一个方法是让之前配置过JDK去加载jar包进行编译,我们复制tomcat服务器目录下lib目录中的servlet-api.jar文件,复制到之前配置好的%JAVA_HOME%\jre\lib\ext\下,如下图:
第二种方法是,还可以在之前配置好的环境变量CLASSPATH最后追加servlet-api.jar的路径,比如我的是:;%CATALINA_HOME%\lib\servlet-api.jar,然后确定即可生效,这两种方法都可以,但是推荐第一种,因为jar包复制过去,以后服务器目录改变了也不影响
然后我们就可以直接编译java源文件了,我使用的编码是UTF-8的,所以用:javac -encoding utf-8 HelloServlet.java进行编译
那么编译成功,同目录下会出现一个HelloServlet.class的字节码文件,然后我们复制该文件到classes/servlet/下,就是路径要和package声明包的保持一致,然后配置web.xml文件,当然在Servlet3.0之后还可以用注解进行url配置,xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" metadata-complete="true" version="3.1"> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/servlet/HelloServlet</url-pattern> </servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/servlet/HelloServlet/</url-pattern> </servlet-mapping> </web-app>
这里配置和2个url-pattern用任何一个都能访问,注意<servlet-class>的配置,要把包写完整,写好之后保存;然后启动tomcat,输入http://localhost:8080/MyFirstServlet/servlet/HelloServlet,访问就可以了
以上就是手动配置的过程,我们可以把IDE的项目手动的移植过来,也可以自由的配置JavaBean和其他的业务逻辑类等,只要原理明白了其他的就简单了,这样就不会出现只会使用IDE的被动,开发起来也更加灵活
相关文章推荐
- 意外却又是必然的逻辑
- 慕课网 static 静态变量
- Android TextView跑马灯效果与设置文字阴影
- Maximum Product subarray | LeetCode
- 两个线程与stringbuffer和stringbuiler以及lock synchronized线程测试
- spawn分析
- iOS-UIButton和UIImageView的区别
- 可变参数列表<stdarg.h>
- JAVA解析XML文件(三)---JDOM方式解析
- XML文件读取
- Node.js-require() 源码解读
- 汇总Javascript各种判断脚本(javascript经典例子)
- LayoutSubviews总结
- ListView控件详解
- 编译安装thrift和使用autoconf,automake生成Makefile文件
- 不只是给面试加分 -- Java WeakReference的理解与使用
- 1012. 数字分类 (20)
- 本周心得
- int和Integer有什么区别?
- poj-2140-Herd Sums- 数学规律-连续和为N的方案数