创建Servlet
- 在src下面新建一个Servlet文件
- 打开这个文件
package servlet;
import javax.servlet.http.HttpServlet;
import java.io.IOException;
public class ServletTest1 extends HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
//在这里可以输出一条语句
System.out.println("接收到一条消息");
}
}
- 打开web目录下的WEB_INF目录下的web.xml
- 添加几行代码
<servlet>
<!-- 这里的servlet-name是你自己起的名字 -->
<servlet-name>ServletTest1</servlet-name>
<!-- 这里的servlet.ServletTest1 是你建的文件的路径 包名+文件名 -->
<servlet-class>servlet.ServletTest1</servlet-class>
</servlet>
<!-- 这里会有一个文件映射 -->
<servlet-mapping>
<!-- 这里的ServletTest1必须和上一行的ServletTest1一致 -->
<servlet-name>ServletTest1</servlet-name>
<!-- test01是你要访问的路径 -->
<url-pattern>/test01</url-pattern>
</servlet-mapping>
- 在idea里面启动Tomcat
- 浏览器输入你刚才的请求路径,我的是:
http://localhost:8080/javaweb/test01 - idea 控制台会输出一条消息
web页面显示java代码
package servlet;
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;
import java.io.PipedWriter;
import java.io.PrintWriter;
@WebServlet(name = "ServletTest2")
public class ServletTest2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("你好");
writer.print("<h1>Hello</h1>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("这是第二条Servlet消息");
}
}
注意:是在doGet方法里面重写。
restful风格
- /* 路径不管输入什么,都会出来页面。
<servlet-mapping>
<servlet-name>test2</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
- *.do 前面可以任意写,后面写do
<servlet-mapping>
<servlet-name>test2</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
- 多级目录
<servlet-mapping>
<servlet-name>test2</servlet-name>
<url-pattern>/demo/test2</url-pattern>
</servlet-mapping>
重定向
重定向就是你打开一个网页,但是却跳转到另外一个网页。
//下面一行代码就可以在打开网页的时候,跳转到百度页面
response.sendRedirect("https://www.baidu.com/");
网页交互
第一个文件
package servlet02;
import javax.servlet.ServletContext;
import java.io.IOException;
@javax.servlet.annotation.WebServlet(name = "Servlet01")
public class Servlet01 extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
//
//通过servlet对象,可以获取一个servletContext;
response.setCharacterEncoding("UTF-8");
ServletContext servletContext = this.getServletContext();
String username = "abc"; // 可以通过JDBC去读取;
// setAttribute:设置一个属性;(属性名,属性值)
servletContext.setAttribute("name",username);
response.getWriter().print("设置信息成功!" + username);
}
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
doPost(request,response);
}
}
第二个文件
package servlet02;
import javax.servlet.ServletContext;
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(name = "Servlet02")
public class Servlet02 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
ServletContext servletContext = this.getServletContext();
String name = (String) servletContext.getAttribute("name");
response.getWriter().println("获取到的信息为:" + name );
}
}
web.xml
<?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">
<servlet>
<servlet-name>test1</servlet-name>
<servlet-class>servlet02.Servlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test1</servlet-name>
<url-pattern>/test1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>test2</servlet-name>
<servlet-class>servlet02.Servlet02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test2</servlet-name>
<url-pattern>/test2</url-pattern>
</servlet-mapping>
</web-app>
运行的时候,先在网页中输入 test1 再输入test2 ,test2就可以得到test1的消息了。