gpt4 book ai didi

java - 在eclipse java web应用程序中引用特定资源的url

转载 作者:行者123 更新时间:2023-12-01 14:49:26 25 4
gpt4 key购买 nike

谁能告诉我如何使用 java servlet 指定特定资源的 url?我正在使用 eclipse 。下面的代码生成一个 servlet,其主页可以在以下 url 中查看:

http://www.mysite.com/myapp/thisservlet/  

相反,我希望能够访问 url 处的特定 jsp:

http://www.mysite.com/myapp/thisservlet/thishere.jsp  

此外,我希望 thishere.jsp 能够调用位于 Eclipse 中应用程序目录结构中其他位置的代码。例如,在我的 eclipse 项目中,thishere.jsp 位于 myapp/web/WEB-INF/web 文件夹中。但是,ThatThereApplet.java 位于包 myapp.myapplets 中,该包位于我的 Eclipse 项目中的路径 myapp/src/myapp.myapplets/ThatThereApplet.java 中。或者,我还将 ThatThereApplet.class 捆绑在 test_applets_1.jar 中,将其放置在 eclipse 项目中的 myapp/web/WEB-INF/lib 文件夹中,然后使用 eclipse 中的上下文菜单将其添加到我的应用程序的构建路径中。

任何人都可以告诉我如何更改下面的代码,以便它执行我上面描述的操作吗?

这是 ThisServlet.java 的代码:

package myapp.web;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ThisServlet extends HttpServlet {

private RequestDispatcher jsp;

public void init(ServletConfig config) throws ServletException {
ServletContext context = config.getServletContext();
jsp = context.getRequestDispatcher("/WEB-INF/jsp/thishere.jsp");
}

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
jsp.forward(req, resp);
}
}

这是 thishere.jsp 的代码:

<html>
<head>
<title>Test Applets Go Here</title>
</head>
<body>
<h1>Gonna put an applet below:</h1>
<applet code="myapp.myapplets.ThatThereApplet.class" archive="test_applets_1.jar" width="500" height="500">
<h1>The applet should be above this line.</h1>
</body>
</html>

这是我封装在 test_applets_1.jar 中并添加到构建路径的代码:

package myapp.myapplets;
import java.applet.*;
import java.awt.*;

public class ThatThereApplet extends Applet {

int width, height;

public void init() {
width = getSize().width;
height = getSize().height;
setBackground( Color.black );
}

public void paint( Graphics g ) {
g.setColor( Color.green );
for ( int i = 0; i < 10; ++i ) {
g.drawLine( width, height, i * width / 10, 0 );
}
}
}

这是 web.xml 的相关部分:

<servlet>
<servlet-name>thisservlet</servlet-name>
<servlet-class>myapp.web.ThisServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>thisservlet</servlet-name>
<url-pattern>/thisservlet</url-pattern>
</servlet-mapping>

编辑:

<小时/>

我遵循了 Sudhakar 的伟大建议并更改了 web.xml 以指示:

<url-pattern>/thisservlet/thishere.jsp</url-pattern>  

但是,当我在浏览器中加载 thishere.jsp 时,应用程序无法找到小程序的位置,因此即使 thishere.jsp 加载了,小程序也不会加载。当我在 Web 浏览器中加载 thatthere.jsp 时,我运行了 Java 控制台,以下是它生成的错误日志:

load: class myapp.myapplets.ThatThereApplet.class not found.
java.lang.ClassNotFoundException: myapp.myapplets.ThatThereApplet.class
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassNotFoundException: myapp.myapplets.ThatThereApplet.class

谁能告诉我如何更改上面的代码,以便应用程序能够找到 ThatThereApplet.class 并将其成功加载到 thishere.jsp 中?

最佳答案

将 web.xml 中的 url-pattern 更改为

<servlet-mapping>
<servlet-name>thisservlet</servlet-name>
<url-pattern>/thisservlet/thishere.jsp</url-pattern>
</servlet-mapping>

关于java - 在eclipse java web应用程序中引用特定资源的url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15033805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com