Java Jetty设置Servlet与JSP页面通信
我对JSP和Jetty非常陌生,我真的很困惑为什么这段代码不起作用 这是我的主课Java Jetty设置Servlet与JSP页面通信,java,jsp,servlets,jetty,Java,Jsp,Servlets,Jetty,我对JSP和Jetty非常陌生,我真的很困惑为什么这段代码不起作用 这是我的主课 public static void main(String[] args) { Server server = new Server(8080); // As we are using the Servlet to server responses remove the resource // handler. ResourceHandl
public static void main(String[] args) {
Server server = new Server(8080);
// As we are using the Servlet to server responses remove the resource
// handler.
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setWelcomeFiles(new String[] { "index.jsp",
"index.html" });
resource_handler.setResourceBase("./target/classes/webapp");
// Initialise Servlet context handler
ServletContextHandler context = new ServletContextHandler(
ServletContextHandler.SESSIONS);
context.setContextPath("/");
// Create WebAppContext for JSP files.
WebAppContext webAppContext = new WebAppContext();
webAppContext.setResourceBase("./target/classes/webapp");
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { webAppContext, context,
resource_handler, new DefaultHandler() });
server.setHandler(handlers);
try {
server.start();
} catch (Exception ex) {
ex.printStackTrace();
System.exit(-1);
}
}
这是我的servlet
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = 0x1C30CCL;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Set response content type.
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
request.setAttribute("message", "hello");
}
}
这是我的index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<title>Book a hotel!</title>
</head>
<body>
<form action="index.jsp" method="post">
<input type="text" name="username" placeholder="Enter Username" />
<input type="Submit">
</form>
<p> The current local time at the hotel is: <%= new java.util.Date() %> </p>
<h1>${message }</h1>
</body>
</html>
预订酒店!
酒店目前的当地时间为:
${message}
这是我的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-class>ncl.raffaello.IndexServlet</servlet-class>
<servlet-name>IndexServlet</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>IndexServlet</servlet-name>
<url-pattern>index.jsp</url-pattern>
</servlet-mapping>
</web-app>
ncl.raffaello.IndexServlet
IndexServlet
IndexServlet
index.jsp
我的问题是,虽然我知道当我没有servlet时.jsp可以工作,但我希望servlet设置请求变量,但是当启用servlet时,就像在我的代码示例中一样,它根本不运行任何.jsp!有什么帮助吗?我不知道该怎么办…你必须使用
PrintWriter out=res.getWriter();
out.println(“某物”)
在sevlet
中,在jsp
页面上打印某物
简单教程
将servlet映射url模式表单index.jsp
更改为test
<servlet-mapping>
<servlet-name>IndexServlet</servlet-name>
<url-pattern>test</url-pattern>
</servlet-mapping>
IndexServlet
测试
将index.jsp中的表单操作修改为
构建项目并启动服务器
如果点击urllocalhost:8080
,您应该会得到index.jsp,因为您将其设置为welcomePage
。如果没有,请尝试localhost:8080/index.jsp
。你现在应该拿到表格
如果您提交表单,
IndexServlet
将被调用您正在定义一个具有/index.jsp映射的servlet,并且具有一个同名的静态欢迎页面
当容器收到/index.jsp的请求时,它会查找最长的精确匹配,因此它会与servlet匹配,并调用doGet
容器仅在未找到完全匹配的情况下调用jsp,在这种情况下,它将与jsp处理器将匹配的*.jsp匹配
你有两个选择:
抱歉,Sysout只是调试代码。执行该代码时,只需将“某物”打印到我的页面上,它不会显示web表单和jspdid的其余部分。您可以通过此url获得
index.jsp
,localhost:8080/index.jsp?是的,我曾经使用过urlI,但最终我执行了后者,它可以工作,我的问题是,在发送get请求时是否可以“拦截”调用,设置一些参数,然后转移到同名的.jsp页面,该页面将显示该参数。除非服务器提供了一些特殊的定制方式。基本上,服务器不能将同一个uri(/index.jsp)与入站请求的一个资源和转发请求的不同资源相匹配。好的,这是非常有用的信息,我会将您的答案标记为已接受,然后选择第二个选项。非常感谢你!