第一个Servlet程序的运行 (50分)

  • 主题发起人 主题发起人 wukw
  • 开始时间 开始时间
W

wukw

Unregistered / Unconfirmed
GUEST, unregistred user!
晓钢,其实我对Java,Servlet一点也不懂,就JSP还知道一点,恳请指教。
编辑autoexec.bat: path=c:/jdk1.3.1_02/bin;c:/servlet.jar;
这样写不行,(我已经把servlet.jar拷到了c:/)
另外,右击 我的电脑->属性->高级->环境变量->classpath = .;c:/servlet.jar;
这样也不行,编译仍然报错。
目前,我想了一个笨办法,先解压servlet.jar,然后把javax目录拷出来,与我的程序放在同一个目录下,这样就能编译了。但这样不好,请你帮我想想办法。
程序已能正确编译,如下:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

public class HelloServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String clientIPAddress = req.getRemoteAddr();
res.setContentType("text/html");
ServletOutputStream out = res.getOutputStream();
out.println("<html>");
out.println("<head><title>Hello World</title></head>");
out.println("<body>");
out.println("<h1>Hello,You come from "+ clientIPAddress + "</h1>");
out.println("</body></html>");
}
}
以下摘自我转贴的文章:
  3.将Servlet添加进Web Server
  由于Servlet是通过Web Server进行调用的,因此必须将其在Web Server中进行注册,以便Web Server能够正确的找到Servlet代码。对于Java Web Server来说,它提供了一个系统管理Applet,通过该Applet对我们的HelloServlet进行注册(在这里,我们将HelloServlet命名为firstServelt)。
  3.测试Servlet
  现在可以对HelloServlet进行测试了,打开浏览器,键入
  http://192.168.0.9/servlet/firstServlet
  其中192.168.0.9是安装有Java Web Server的机器IP地址。
  如果一切正常,在浏览器中将返回一个页面,输出“Hello,You come from 192.168.0.11”。其中192.168.0.11是运行浏览器的机器IP地址。
问题是怎么注册?
我用的是Weblogic,在applications目录下面建立一个目录servlet,拷入HelloServlet以及javax,启动Weblogic
键入http://127.0.0.1/servlet/HelloServlet,结果还是不能运行,帮忙分析一下,多谢了!
其它同志如果想和我一起学习servlet,参见
http://www.delphibbs.com/delphibbs/dispq.asp?lid=990470
我在上面转贴了很多关于Servlet的文章,以后还会继续贴的,欢迎交流,共同进步,闲着也是闲着。
 

>我用的是Weblogic,在applications目录下面建立一个目录servlet,拷入HelloServlet以及javax,启动Weblogic
>键入http://127.0.0.1/servlet/HelloServlet,结果还是不能运行,帮忙分析一下,多谢了!
这样是不行的,你需要用eblogic的管理器建立一个web application.
你需要参阅weblogic的文档。清仔细看看weblogic附带的文档,这比你到处看文章强的多。
 
>>清仔细看看weblogic附带的文档,这比你到处看文章强的多。
Weblogic的文档也是前几天搞到的(Weblogic的文档真的很难找),还是全英文的,唉,自己慢慢研究吧。
多谢了!
还有对于servlet.jar应该放在哪里?我认为这是Java编译环境的问题,与Weblogic无关吧?
 
唉,简直是没法看啊,23兆的英文。它不像MSDN那样简洁明了,有结构图,有索引。无从下手啊。。。
如果能看下来,简直就是把一个网站翻译过来了。
指望别人是不可能的,让我再想想~~
 
哈哈,功夫不负有心人,我找到文章了,哈哈哈哈,狂笑!
试验成功了,哈哈哈哈,狂喜!
为了造福天下苍生,转贴如下:(我,一个普通的编程爱好者,向这位作者致以最崇高的敬意!!!)
文章主题: Weblogic中使用Servlet

Weblogic中使用Servlet
本文当适合于个人开发时使用,项目deploy时会有专门的人负责的
为方便起见,请先完成相应的修改后,再启动Weblogic
以下操作有些是本来可以在console中完成的,但是由于目前console有些问题,故我们这里直接改动相关文件,以config/mydomain为例子。
1.首先,新建一个Web Application,方法如下
打开mydomain下的config.xml,在最后的< /Domain >语句之前追加入如下语句
< Application
Deployed="true"
Name="bbb"
Path="./config/mydomain/applications"
>
< WebAppComponent
Name="bbb"
Targets="myserver"
URI="bbb"
/ >
< /Application >
保存。
2.在mydomain/applications目录下新建目录bbb
在bbb目录下建WEB-INF目录
在WEB-INF目录下新建classes
3.将附件中的web.xml拷贝到bbb/WEB-INF下
对web.xml部分语句的介绍
。。。。。。。。。。。。
。。。。。。。。。。。。
< web-app >
< display-name >sglzhh< /display-name >
< servlet >定义Servlet
< servlet-name >hhh< /servlet-name >
< servlet-class >hwe< /servlet-class >
< /servlet >
< servlet-mapping >
< servlet-name >hhh< /servlet-name >
< url-pattern >/sglzhh/*< /url-pattern >注意这里的“*”,下面会用到的
< /servlet-mapping >
< /web-app >
4.将附件中的hwe.class拷贝到mydomain/applications/bbb/WEB-INF/classes目录下
5.启动Weblogic6.0的default Server
6.访问我们的小例子
http://127.0.0.1:7001/bbb/bluebenben
注意,这里的bbb是我们新建的web application.
sglzhh是我们的servlet所被映射的名字
映射时加了/*,则访问时,不管我们在http://127.0.0.1:7001/bbb/sglzhh后面加什么文件名,都显示该servlet的内容
例如:
http://127.0.0.1:7001/bbb/sglzhh
http://127.0.0.1:7001/bbb/sglzhh/kkk.jsp
http://127.0.0.1:7001/bbb/sglzhh/mm.html
输出结果都是一样的
如果个人想根据自己的爱好对设置做相应改动,请先调通
附件中的web.xml
< !DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd" >
< web-app >
< display-name >bluebenben< /display-name >
< servlet >
< servlet-name >hhh< /servlet-name >
< servlet-class >hwe< /servlet-class >
< /servlet >
< servlet-mapping >
< servlet-name >hhh< /servlet-name >
< url-pattern >/bluebenben/*< /url-pattern >
< /servlet-mapping >
< /web-app >
附件中的hwe.java自己编成hwe.class
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class hwe extends HttpServlet {

public voiddo
Get(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();

out.println("< html >");
out.println("< head >");
out.println("< title >bluebenben< /title >");
out.println("< body >");
out.println("< center >");
out.println("I am bluebenben");
out.println("< /center >");
out.println("< /body >");
out.println("< /html >");
}
}
 
to 晓钢
其实搭这种环境最好还是有人帮一下。记得java的编译环境,我整整折腾了一天半!真的,一点都不夸张。一个人自学就是这么郁闷。
最后还是在CSDN上一位网友用QQ手把手教我搭起来的,真是非常非常感谢他。如今我和他已经是非常好的朋友。
有一次还开玩笑说,如果没有他的帮助,Java我根本没法学下去。因为程序看不懂没关系,可以跳过去。可是环境搭不成,一个程序都运行不了,当然没法学下去。
唉,小弟和曹大侠的遭遇可是大不相同啊。
那个Weblogic的文档,根本就是它原来网站的界面,没法查啊。你的Structs翻译花了一天半,可是23M的网页我不是要看死了?
嗯,半夜1:39,再听完最后一首歌,带着欣喜睡觉去了喽!
 
wukw 看到您怎么投入到 servlet,真是有点担心。
怕我曾经灌输给您“JSP不会取代servlet”的观点误导您的学习方向。
如果您希望更多了解比较新的技术的话
JSP -> Tag Lib -> JSTL (不必一头扎入 servlet)
http://www.delphibbs.com/delphibbs/dispq.asp?lid=995899
如果您确实想从底层玩起,那就不妨碍了,请继续。
 
其实你不必要看23M的英文资料啊,要挑有用的看。里面会有很多是API的资料等等,是开始不用看的。
总会有指南的。
你想,Weblogic也不想大家都要看23M才能开始写程序 :)
 
我是无从下手,它不是和Delphi的帮助,也不是CSDN,整个一个网站的页面。
甚至有些链接,直接指到bea现在的网站上去了。
好在第一个程序运行成功了,以后就好办多了。
呵呵,我正在努力!
 
to yysun,曹晓钢
前天终于成功运行了一个servlet,今天想运行另一个servlet,却怎么也不成功了。估计是环境的问题,讨厌死了,也不想设置了。
好在运行了一个servlet,对它有了一点最直接和感性的认识。看我用最简洁的语言(全部都是自己的话)概括,请两位大侠评判。多谢!
我感觉servlet就是要用println控制所有的 html 标记(包括 html,head,title,body等)的输出,所以它处理逻辑运算简单,但是控制页面非常麻烦。
Servlet整个就是一个Java程序,只不过它的输出结果是生成一个页面,然后让浏览器解释执行。
而JSP却省去很多麻烦,一是可以像编辑html文件一样 直接编辑静态的html标记,而不用out.println("<html>");
。二是JSP的语句可以很好的
动态控制 html标记的输出,甚至JSP的语句就是用来控制输出的(虽然它也能进行逻辑处理)。三是逻辑运算可以放在Beans中执行,大大提高编码
和执行时的效率。归根到底解决了一个最重要的问题:控制html语句输出问题。
最后在执行上,其实等到编译以后,它们其实已经差别不大。所谓“南与北如一丘之貉”,难兄难弟,只是存在形式不同而已。
最后有一个疑问:为什么不说JSP是Server端执行的Applet?我觉得它也是啊!
两位大侠,恳请指教!
 
以下两个程序是否可以概括了它们两个的区别?(明眼人一眼就能看出来)
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class HelloServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String clientIPAddress = req.getRemoteAddr();
res.setContentType("text/html");
ServletOutputStream out = res.getOutputStream();
out.println("<html>");
// 只能用println输出
out.println("<head><title>Hello World</title></head>");
out.println("<body>");
out.println("<h1>Hello,You come from "+ clientIPAddress + "</h1>");
out.println("</body></html>");
}
}
<HTML> // 可以直接编写
<HEAD>
<TITLE> Newdo
cument </TITLE>
</HEAD>
<BODY>
<% out.println(" iloveyysun");%>
</BODY>
</HTML>
 
servlet是一个很广的概念。除了http,还能处理其他很多协议。
所以不能把你现在所理解的http servlet当作是servlet的全部。
 
基本上领会 servlet 和 JSP 的关系了。[:D]
给您再补充些:
JSP 1.1: <% out.print("How are youdo
ing?");%>
JSP 1.2:
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="1.2">
<jsp:text>How are youdo
ing?</jsp:text>
</jsp:root>
JSTL:(JSP 1.3)
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/ea/core" %>
<c:out value="How are youdo
ing?"/>
ps.
美国人见面打招呼:How are youdo
ing?
英国人见面打招呼:Howdo
youdo
?
 
哈哈
让我想起那个"hello,world"的笑话
又可以加上几段了:P
 
不要忘记了 servlet filter:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1110923
 
多人接受答案了。
 
后退
顶部