使用idea软件 创建一个Maven 文件
1)双击打开pom.xml
2)加入servlet依赖
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!--jsp的依赖(jsp相关的jar加进来)--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.2.1</version> <scope>provided</scope> </dependency>
3)重载文件(不然不会下载)
右键 pom.xml文件----->选择maven----->选择Reload project
request--请求(浏览器发给服务器)\我们可以通过请求获取到用户的信息来进行相应的处理
response--响应(服务器返回给浏览器)\通过对数据的处理而对浏览器作出的响应
1)获取request 和 response
首先让我的类继承 HttpServlet 然后 通过重写方法来获取
public class request extends HttpServlet { //引用servlet @Override //重写方法 protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
1)写一个简单的登录页面
<html> <head> <title>Title</title> </head> <body> <form action="" method="post"> 用户名<input name="Username" type="text" > <br> 密 码<input name="Password" type="password" ><br> <input type="submit" value="登录"> </form> </body> </html>
2)通过request获取 到用户提交的表单数据
通过request.getParameter("表单name")来进行获取
注:getParameter的参数要保持和表单中的name一致才能够获取到
String Username = request.getParameter("Username"); String Password = request.getParameter("Password");
3)在用户登录后输出欢迎某某
我们通过response.getWriter();来向用户输出文本
Writer writer = response.getWriter(); writer.write("欢迎"+Username+"的访问,您的密码为"+Password);
这样我们一个简单的测试就完成了
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.Writer; public class request extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String Username = request.getParameter("Username"); String Password = request.getParameter("Password"); Writer writer = response.getWriter(); writer.write("欢迎"+Username+"的访问,您的密码为"+Password); } }
4)调用写的方法
通过使用@WebServlet(urlPatterns = "Url")注解的方式来运行我们的代码
Url 指的是拦截的地址 加入此处填写的是 pass ,那么服务器就会拦截关于url为pass的请求来运行我们的代码
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.Writer; @WebServlet(urlPatterns = "/request") //添加注解拦截 public class request extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String Username = request.getParameter("Username"); String Password = request.getParameter("Password"); Writer writer = response.getWriter(); writer.write("欢迎"+Username+"的访问,您的密码为"+Password); } }
当我们这些处理完成后 还需要在提交表单的 action="" 中添加Url
<html> <head> <title>Title</title> </head> <body> <form action="127.0.0.1:8080/request" method="post"> 用户名<input name="Username" type="text" > <br> 密 码<input name="Password" type="password" ><br> <input type="submit" value="登录"> </form> </body> </html>
下面开始测试
用户名 :zhangsan 密码:123456
当我们按登录按钮时,用户的表单数据就会被提交到 127.0.0.1:8080/request
因为我们的方法是拦截 request 所以表单的数据就在被拦截的类中进行处理 然后返回给用户的浏览器中
成功获取到 但是中文会出现乱码的情况 所以我们要整改一下
5)解决乱码问题
只需要在类中添加以下代码 就可以解决乱码问题
response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("UTF-8"); response.setHeader("content-type","text/html;charset=UTF-8");
//整改后 @WebServlet(urlPatterns = "/request") public class request extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("UTF-8"); response.setHeader("content-type","text/html;charset=UTF-8"); String Username = request.getParameter("Username"); String Password = request.getParameter("Password"); Writer writer = response.getWriter(); writer.write("欢迎"+Username+"的访问,您的密码为"+Password); } }
重启服务器再次测试一遍 发现解决完成