JSP菜鸟问题:::那位大哥给我解析一下代码?

imatree 2003-10-20 03:29:40
我看到一个JSP程序,表单提交都提交到/ebseries/controller,我没找到controller,但发现与之相同的class文件,这是反编译后的代码。
请帮我解释一下其中的原理,谢谢。

// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3)
// Source File Name: Controller.java

package net.ebseries.servlet;

import java.io.IOException;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.*;

// Referenced classes of package net.ebseries.servlet:
// Command, CommandResult, CommandFactory

public class Controller extends HttpServlet
{

public Controller()
{
}

public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
HttpSession session = req.getSession();
javax.servlet.ServletConfig config = getServletConfig();
session.removeAttribute("_result_");
String fatal_page = getInitParameter("fatal_page");
String cmdcls = req.getParameter("_clsid_");
if(cmdcls == null)
{
resp.sendRedirect(fatal_page);
return;
}
Command cmd;
synchronized(cmdMap)
{
cmd = (Command)cmdMap.get(cmdcls);
if(cmd == null)
{
cmd = CommandFactory.create(cmdcls);
if(cmd != null)
cmdMap.put(cmdcls, cmd);
}
}
if(cmd == null)
{
resp.sendRedirect(fatal_page);
return;
}
CommandResult result = new CommandResult();
if(cmd.validateForm(config, req, resp, result))
cmd.execute(config, req, resp, result);
session.setAttribute("_result_", result);
String resultpage = result.getResultPage();
if(resultpage != null)
resp.sendRedirect(resultpage);
}

public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
doPost(req, resp);
}

public static final String _CLSID_ = "_clsid_";
public static final String _RESULT_ = "_result_";
private static HashMap cmdMap = new HashMap();

}
...全文
53 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
凋零的老树 2003-10-20
  • 打赏
  • 举报
回复
最好看看前端的页面提交的内容,这个处理那些提交过来的参数的servlet
1981520baby 2003-10-20
  • 打赏
  • 举报
回复
提交到servlet
starfeng 2003-10-20
  • 打赏
  • 举报
回复
首先这个class不同一Hello word中的class,它是一个servlet
当你的url访问到这个servlet时,服务器会根椐你表单中的<form method="">这个method是post还是get来调用这个serlvet中的doPost()或doGet();
在这个serlvet中,它的doGet()方法只是简单的把实现丢给了doPost()方法,所以我们只要看doPost()中的实现就可以了。
在这个serlvet中doPost(),从session及reuqest中取得一些相关的参数象_clsid_,fatal_page之类,对它们进行一些判断,如果参数不合法,则转向错误码页面。然后,调用cmd.execute(config, req, resp, result)做了些操作,最后把结果返回客户端

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧