我们接着再来看看,如何把页面HTML内容写在单独的文件里面吧!
我们这一次可以不用新建新项目,接着上次的项目一起。
说个题外话:一定要敲代码!敲代码真的很重要!!!
OK,我们开始吧!
先来看看目录结构:
如果你觉得这里说的太啰嗦了,你都会,就往下翻,翻到下一个“—啰嗦分割线—”标题在开始读哦!
再来看看Main的代码:
public class Main {
public static void main(String[] args) throws LifecycleException {
Tomcat tomcat = new Tomcat();
tomcat.setPort(Integer.getInteger("port", 8080));
tomcat.getConnector();
// 创建webapp:
Context ctx = tomcat.addWebapp("", new File("src/main/resources").getAbsolutePath());
WebResourceRoot resources = new StandardRoot(ctx);
resources.addPreResources(
new DirResourceSet(resources, "/WEB-INF/classes", new File("target/classes").getAbsolutePath(), "/"));
ctx.setResources(resources);
tomcat.start();
tomcat.getServer().await();
}
}
注意看这里,src/main/resources
,不正是这个文件夹吗?
没错,我们的资源都放在这里。
网上别的文章可能是:src/main/webapp
,那就要手动在main
文件夹里面创建一个webapp文件夹了。
—啰嗦分割线—
好了,我们开始写页面吧!
创建文件夹templates
里面创建hello.jsp
文件。
写入:
<!DOCTYPE html>
<html>
<head>
<title>Hello page</title>
</head>
<body>
<% String name = request.getParameter("name");
name = name == null ? "world" : name;
%>
<h1>Hello, <%= name%></h1>
</body>
</html>
仔细看:<% String name = request.getParameter("name"); %>
这不是java代码吗???
仔细看:<%= name%>
这……不是name变量吗?
没错,jsp的主要威力就在这里。
jsp中,<%= %>
代表变量显示,<% %>
代表java代码。
再创建Java class:HelloPageServlet
,写入:
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = "/hellopage")
public class HelloPageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("/templates/hello.jsp").forward(req, resp);
}
}
可以看到,我们这里用到了上一篇博客提到的“转发”,把/hellopage
交给了hello.jsp
处理。
效果如下:
OK,大家会用了吗?