title: servlet内容学习
date: 2020-07-31 07:44:17
author: sunflower34
categories: Servlet
tags:
- Servlet
概念:用于处理用户提交在web上的数据
步骤:
- 创建WEB应用
- 写Servlet脚本
- 部署TOMCAT
获取参数的方法:
当提交方式为post时,在脚本中需要doPost方法获取参数
String name = request.getParameter("name");
System.out.println("name:" + name);
这个是在tomcat上查看
其中name为name属性的值
request是从web应用请求获取数据
获取响应:
当提交数据时,脚本文件获取参数后,通过响应方法在web端打印html
PrintWriter pw = response.getWriter();
pw.println(html)其中html为(html = "<div style='color:green'>success</div>";)
可以看到写html很麻烦,后面应该有简单的方式把
-
Servlet几类方法:
-
doGet()
当浏览器用get方式提交数据时
包括:默认form方式 点击超链、输入链接、ajax指定get当时 -
doPost()
当浏览器使用post提交数据时
包括:在form上用post、ajax指定post -
Servlet()
service(HttpServletRequest , HttpServletResponse )
作用:直接用service方法无需区分是post或是get,区分一下也不难
Servlet中文问题
web上:
Servlet生命周期
Servlet是单例化的,意思是当在浏览器中输入网址后,对应脚本会实例化并执行一次构造方法
当执行时会自动调用构造方法和初始化方法和销毁方法
public LoginServlet() {}
public void init(ServletConfig config) {}
public void destroy() {}
其中LoginServlet是脚本名称
乱码问题:
https://blog.csdn.net/shark1357/article/details/88791030
idea的tomcat控制台显示乱码VM options:-Dfile.encoding=GBK
Servlet跳转
跳转有两种方式:
-
服务端跳转:
request.getRequestDispatcher(“success.html”).forward(request, response);
success.html为跳转页面全称,跳转后的地址变化html清除了。 -
客户端跳转:
response.sendRedirect(“fail.html”);
fail.html为跳转页面全称,跳转后的地址变化为fail.html就会变化了。
-
Servlet自启动
- 自启动就是在上述init()方法
- 首先在web.xml增加10
- 然后在init()方法内增加初始化方法即可
Servlet获取参数
request.getParameter(): 是常见的方法,用于获取单值的参数
request.getParameterValues(): 用于获取具有多值的参数,比如注册时候提交的 “hobits”,可以是多选的。
request.getParameterMap(): 用于遍历所有的参数,并返回Map类型。
Map<String, String[]> parameters = request.getParameterMap();
Set<String> paramNames = parameters.keySet();
//获取参数名称
parameters.get(param)
//通过名称获取值
Servlet的response用法
获取响应:PrintWriter pw= response.getWriter();
返回浏览器内容:
println(),append(),write(),format()
设置响应格式:
response.setContentType("text/html");
把html改成LOL会提示下载,可用这种方式下载东西。实测不行
- response.setContentType(“text/html; charset=UTF-8”);
- response.setCharacterEncoding(“UTF-8”);
两种响应编码方式
1、不仅发送的文本为utf-8格式,设置浏览器的显示也为utf-8格式。
2、知识发送的文本设置为utf-8格式。
301或302客户端跳转(301表示永久跳转,302表示临时跳转)
302:response.sendRedirect("fail.html");
301:
response.setStatus(301);
response.setHeader("Location", "fail.html");
默认是缓存开启,浏览器缓存关闭方式:
response.setDateHeader("Expires",0 );
response.setHeader("Cache-Control","no-cache");
response.setHeader("pragma","no-cache");
关闭的原因是会看到过时的信息
上传文件
前提:
1.提交方式必须为post
2.enctype=“multipart/form-data” 表示提交的数据是二进制文件
Servlet增减删查
可以发现需要在Servlet中写html代码很不方便。在html中写代码且又可调用脚本中的变量需要用到jsp