servlet使用过程

servlet使用过程
1.导包
    在idea中导包,在如图位置导入包,成功后会在图2位置显示,如果导入的包无法点开查看详情,则该包是有问题的,我一开始是在tomcat中的servlet包,但是就出现了导入包之后打不开局面,后面重新在网上下载之后才如下图所示可以点开来查看
2.创建web application项目
    在2020版之后的idea中 创建web application的方式改变了,勾选如图
3.发送请求地址,如图的请求地址,右边的是在web.xml中配置的servlet,在浏览器中输出地址后,会在到web.xml中寻找对应的地址,这里地址是/login,在web.xmL找到该地址后,通过他的<servlet-name>标签找到对应的servlet配置信息,然后找到他所对应的类
4.接收参数
    在servlet的类中,需要先继承HttpServlet类,当请求到达这类的时候,会默认找到这个类的service方法,service会通过get/post请求将请求转到doget/dopost方法中,我这边是在dopost默认调用doget的方法
接收参数分为三块
请求行:
  
String method = request.getMethod();
System.out.println("请求方式:"+method);
StringBuffer requestURL = request.getRequestURL();
System.out.println("请求地址:"+requestURL);
String requestURI = request.getRequestURI();
System.out.println("资源标识符"+requestURI);
String scheme = request.getScheme();
System.out.println("请求"+scheme);
 
请求头:
是根据键值对的方式获取
1.request.getHeader("Connection"),通过key值找到对应的value值
2.request.getHeaderNames();获取所有的key,然后获取相应value值
System.out.println(request.getHeader("Connection"));
System.out.println("-------------------------");
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()){
    String headerName = headerNames.nextElement();
    System.out.println(headerName+":"+request.getHeader(headerName));
}
System.out.println("-------------------------");
请求体:
1.request.getParameter("key"),通过key值找到相应的value值
2.Enumeration<String> parameterNames = request.getParameterNames();,获取所有的key值,这个需要使用迭代器遍历
注意:如下图中有一个key值是表单中hobby,是一个多选框,需要使用
String[] parameterValues = request.getParameterValues("hobby");来获取多个参数值
 
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()){
    String parameterName = parameterNames.nextElement();
    System.out.println(parameterName+":"+request.getParameter(parameterName));
}
String[] parameterValues = request.getParameterValues("hobby");
for (String parameterValue : parameterValues) {
    System.out.println("parameterValue = " + parameterValue);
}
String[] users = request.getParameterValues("user");
for (String user : users) {
    System.out.println("user = " + user);
}
System.out.println("-------------------------");
 
5.响应请求
使用response返回请求,这里会产生乱码问题,后续会解决他
 
PrintWriter writer = response.getWriter();
response.setContentType("text/html");
writer.write("<html>");
writer.write("<head>");
writer.write("<meta charset=\"UTF-8\">");
writer.write("</head>");
writer.write("<body>");
writer.write("<form method='get' action='submitLogin'>");
writer.write("用户名:<input type='text' name='user'>");
writer.write("密码:<input type='text' name='pwd'>");
writer.write("<input type='submit' value='提交'>");
writer.write("</form>");
writer.write("</body>");
writer.write("</html>");
 
posted @ 2021-08-07 17:09  七七负柒柒  阅读(165)  评论(0)    收藏  举报