第一个servlet的项目的搭建
先理解下访问web的过程:
前提:Tomcat服务器需要配置好,并且在idea的configurations中创建Tomcat的部署!
- 创建Maven项目中已经有的简单web框架,要先创建和配置好java和resource目录。
- 在pom.xml下导入servlet的依赖:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
- 修改webapp/WEB-INF/web.xml文件中的版本号,尽量与我们Tomcat根目录的webapps\ROOT中的版本号一致:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
</web-app>
- 在配置好的java文件中创建一个java文件,例如:com.chen.servlet.HelloServlet.class。
注意点:需要继承HttpServlet类,然后创建两个Overrides Methods(doGet,doPost)。
注意:可用来设置网站默认的字符编码:response.setCharacterEncoding("UTF-8")
package com.chen.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
//响应的类型:html
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//获取响应的输出流
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>第一个servlet程序执行成功!</h1>");
out.println("</body>");
out.println("</html>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
- 写完了java文件后,需要在web.xml文件中注册我们的类
注意点:
- 每一个servlet-name都需要一个servlet-mapping;
- url-pattern:表示我们可以在搜素框中输入的内容而转到我们写的类中!
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<!--web.xml是配置我们web的核心应用-->
<!--注册servlet-->
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>com.chen.servlet.HelloServlet</servlet-class>
</servlet>
<!--一个servlet对应一个Mapping:映射-->
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<!--请求路径-->
<url-pattern>/chenjinshun</url-pattern>
</servlet-mapping>
</web-app>
- 另外我们还可以写一个静态网页来对比,在webapp目录下创建一个header.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>我是cjs!</h1>
</body>
</html>
- 在idea里面开启Tomcat服务器,页面会直接跳转到index.jsp文件,然后我们在
搜索框输入我们的header.html可以看到我们的静态网页!然后我们把header.html
改为我们的url-pattern中的内容,就可以看到我们java类中的内容!
注意事项:
- 我们在idea开启Tomcat服务时,要先把我们用bat文件开启的Tomcat服务器关闭,
否则会显示端口号已经被占用的错误!
- 创建静态网页的时候,要确保目录时跟index.jsp文件同级,否则无法找到文件!
- 当我们的java文件需要输出中文时,记得设置字符编码!