获取前端浏览器用户提交的数据:
String getParameter(String name)
Map getParameterMap()//这个是获取Map
Enumeration getParameterNames()//这个是获取Map集合中所有的key
String[] getParameterValues(java.lang.String name)//根据Map的key获取获取value数组
//以上四个方法与获取用户提交的数据有关系
//前端获取的数据:username=abc
Title
学生登录系统
//后端会收到这样的结果username=sza002415&userpwd=sadasda&hobby=s&hobby=d&hobby=p
Map
key value
---------------------------------
username {'sza002415'}
userpwd {'sadasda'}
hobby {'s','d','p'}
//Map的使用以及遍历
Map parameterMap = request.getParameterMap();
//遍历Map集合
Set keys = parameterMap.keySet();
Iterator it = keys.iterator();
while (it.hasNext()){
String key = it.next();
String[] values = parameterMap.get(key);//输出数组
//遍历一维数组
for (String value:values){
out.print(value + '
');
}
// out.print(key);
// out.print('
');
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// super.doPost(req, resp);
response.setContentType('text/html');
PrintWriter out = response.getWriter();
//
Enumeration names = request.getParameterNames();
while (names.hasMoreElements()){
String name = names.nextElement();
out.print(name+'
');
}
String[] usernames = request.getParameterValues('username');
String[] userpwds = request.getParameterValues('userpwd');
String[] interests = request.getParameterValues('hobby');
for (String username : usernames){
out.print(username);
}
for (String pwd : userpwds){
out.print(pwd);
}
for (String interest :interests){
out.print(interest);
}
}
使用Servlet的转发机制
执行Aservlet之后,跳转到Bservlet。
获取请求转发器对象
调用请求转发器RequestDispatcher的forward方法
//要转到类time,其是在请求域中拿出绑定的数据
package sza_htmservlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class time extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//从请求域当中取出绑定的数据
Object sysTime = request.getAttribute('sysTime');
//输出到服务器
response.setContentType('text/html');
PrintWriter out = response.getWriter();
out.print(sysTime);
}
}
//是类time_0其绑定了当前的系统时间,绑定了数据到请求域当中
package sza_htmservlet;
import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
public class time_0 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获得系统当前时间
Date nowtime = new Date();
//将系统当前时间绑定到请求域当中
request.setAttribute('sysTime',nowtime);
//第一步:获取请求转发器对象,这里的/time是xml文件里可以访问类的路径
RequestDispatcher requestDispatcher = request.getRequestDispatcher('/time');
//第二步调用请求转发器RequestDispatcher的forward方法参数为 本类的request和response
//此时便会自动转到/time 所指的类当中并执行doGet语句
requestDispatcher.forward(request,response);
}
}
两个servlet如何共享数据?
将数据放到servletContext当中,但是应用域范围太大,占用资源太多,不建议使用
放到request域当中要用时,使用转发机制
转发的下一个资源不一定是Servlet
比如html…
转发的路径以“/”开始,不加项目名
关于request对象中两个非常容易混淆的方法
String username = request.getParameter('username');
//获取的是用户在浏览器上提交的数据
Object obj = request.getAttribute('name');
//获取的是请求域中绑定的数据
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点