<!DOCTYPE html>
<header>
<p>Jan 5, 2015 • CoderSimple <a href="http://codersimple.github.io/android/2015/01/05/run-apache-on-window.html">原文传送阵</a></p>
</header>
<article>
<p>原文链接:<a href="http://www.jb51.net/article/16401.htm">http://www.jb51.net/article/16401.htm</a></p>
这里主要是要自定义自己的 servlet 来模拟 get 请求,应用程序通过 get 请求数据,自定义的 servlet 返回数据
建立自己的jsp app目录
- 到 Tomcat 的安装目录的 webapps 目录,可以看到 ROOT,examples, tomcat-docs 之类 Tomcat 自带的的目录;
- 在 webapps 目录下新建一个目录,起名叫 myapp;
- myapp下新建一个目录 WEB-INF,注意,目录名称是区分大小写的;
WEB-INF下新建一个文件 web.xml,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>My Web Application</display-name> <description> A application for test. </description> </web-app>
在myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容如下:
<html><body><center> Now time is: <%=new java.util.Date()%> </center></body></html>
重启 Tomcat
- 打开浏览器,输入 http://localhost:8080/myapp/index.jsp 看到当前时间的话说明就成功了。
建立自己的Servlet
用你最熟悉的编辑器(建议使用有语法检查的java ide)新建一个 servlet 程序,文件名为 Test.java,文件内容如下:
package test; 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 Test extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/json; charset=utf-8"); response.setHeader("Cache-Control", "no-cache"); String simpleJson = "{\n" + " \"id\": 100,\n" + " \"body\": \"你好\",\n" + " \"number\": 0.13,\n" + " \"created_at\": \"2014-05-22 19:12:38\"\n" + "}"; } } PrintWriter out = response.getWriter(); out.print(simpleJson); System.out.println("ddd"); out.flush(); out.close(); } }
编译,将 Test.java 放在 c:\test 下,使用如下命令编译:
C:\Test>javac Test.java
然后在 c:\Test 下会产生一个编译后的 servlet 文件:Test.class
Tips 提示找不到 javax.servlet.http.HttpServlet 等,将 tomcat 下 lib/servlet-api.jar 拷贝至 jdk1.8.0_25\jre\lib\ext 即可。
将结构 test\Test.class 剪切到 %CATALINA_HOME%\webapps\myapp\WEB-INF\classes 下,也就是剪切那个 test 目录到 classes 目 录下,如果 classes 目录不存在,就新建一个。 现在 webapps\myapp\WEB-INF\classes 下有 test\Test.class 的文件目录结构
修改 webapps\myapp\WEB-INF\web.xml,添加 servlet 和 servlet-mapping 编辑后的 web.xml 如下所示,红色为添加的内容:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>My Web Application</display-name> <description> A application for test. </description> <servlet> <servlet-name>Test</servlet-name> <display-name>Test</display-name> <description>A test Servlet</description> <servlet-class>test.Test</servlet-class> </servlet> <servlet-mapping> <servlet-name>Test</servlet-name> <url-pattern>/Test</url-pattern> </servlet-mapping> </web-app>
这段话中的 servlet 这一段声明了你要调用的 Servlet,而 servlet-mapping 则是将声明的 servlet “映射”到地址 /Test 上
好了,启动 Tomcat,启动浏览器,输入 http://localhost:8080/myapp/Test 如果看到输出 This is a servlet test.就说明编写的 servlet 成功了。
- 注意:修改了web.xml 以及新加了 class,都要重启 Tomcat
- 注意:通过手机访问及非本机的访问,记得关闭防火墙,否则无法访问
- 注意:通过手机访问时的地址不是
http://localhost:8080/myapp/Test
,而是http://本机ip:8080/myapp/Test
,因为 localhost 都是指向执行者自身,所以在手机上面使用 localhost 访问时无法访问,因为服务器在电脑上。
建立自己的 Bean
用你最熟悉的编辑器(建议使用有语法检查的java ide)新建一个 java 程序,文件名为 TestBean.java,文件内容如下:
package test; public class TestBean{ private String name = null; public TestBean(String strName_p){ this.name=strName_p; } public void setName(String strName_p){ this.name=strName_p; } public String getName(){ return this.name; } }
编译 将 TestBean.java 放在 c:\test 下,使用如下命令编译:
C:\Test>javac TestBean.java
然后在 c:\Test 下会产生一个编译后的 bean 文件:TestBean.class
将 TestBean.class 文件剪切到 %CATALINA_HOME%\webapps\myapp\WEB-INF\classes\test 下,
新建一个 TestBean.jsp 文件,文件内容为:
<%@ page import="test.TestBean" %> <html><body><center> <% TestBean testBean=new TestBean("This is a test java bean."); %> Java bean name is: <%=testBean.getName()%> </center></body></html>
好了,重启 Tomcat,启动浏览器,输入 http://localhost:8080/myapp/TestBean.jsp 如果看到输出 Java bean name is: This is a test java bean.就说明编写的 Bean 成功了。
</article>
</div>