一、创建项目
是不是做了太久的程序员,项目不是自己新建,框架不是自己搭建。都忘了怎么新建一个servlet项目了?
选择JAVA版本 | 在上一步点击next后,再点击next来到这里需要 勾选生成web.xml |
二、创建Servlet
三、编写代码
ServletRequestTest.java:
package com.servlet.test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletRequestTest extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//解决请求参数乱码
// 1.post请求方式的数据是以二进制流的形式发送到服务器。
// 2.那么就说明它缺少一个字符集。所以我们要设置请求体的字符集即可。
// setCharacterEncoding必须要获取请求参数之前调用才有效
request.setCharacterEncoding("UTF-8");
//解决返回显示内容乱码
//告诉浏览器输出的内容是html,并且以utf-8的编码来查看这个内容。
response.setContentType("text/html; charset=utf-8");
String username = request.getParameter("username");
System.out.println(username);
}
}
访问Servlet的Jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>Test Servlet page</title>
</head>
<body>
<!-- action 后的路径为新建servlet是配置的路径 这里使用的是默认的路径 -->
<form action="servlet/ServletRequestTest" method="post">
<input type="text" name="username"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
四、发送请求
到这里Servlet的创建与使用就差不多了解了皮毛
PS:别走啊,重点在这里啊
我们在创建Servlet的时候请求路径是:/servlet/ServletRequestTest
但是我们在form的请求路径确是:servlet/ServletRequestTest
为什么呢?来看一下如果请求路径带了/的效果:
我们注意看这里浏览器里的路径。与我们之前不加/的路径:
少了我们的项目名。那么我们i就可以知道这里的/代表的是上级目录;不加/就我们所说的相对路径了