1、创建web项目,导入Servlet依赖坐标
<dependencies>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.1.0version>
<scope>providedscope>
dependency>
dependencies>
2、创建:定义一个类并使用@WebServlet注解配置Servlet的访问路径
@WebServlet("/login")
public class loginServlet extends HttpServlet {}
1、从Servlet加载类创建对象—>对象销毁过程
2、调用无参构造方法创建对象,调用init()方法初始化信息,并且两个方法只会执行一次
3、service()方法用来做接受请求的操作,一次请求就会执行一次,发送几次请求就会执行几次
4、项目关闭,对象销毁,调用destroy()方法销毁对象
默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象
在Servlet实例化后,容器将调用Servlet的init()
方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化工作。该方法只调用一次
每次请求Servlet时,Servlet容器都会调用Servlet的servlet()
方法对请求进行处理。
当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()
方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收
设置编码格式:解决中文乱码问题:request.setCharacterEncoding(“UTF-8”);(仅限于解决post请求的参数问题;对于get请求参数乱码问题:new String(乱码的参数值.getfBytes(“iso-8859-1”),”UTF-8”);
1、get请求的参数直接追加到请求地址url的后面;而post请求没有,post请求的参数在请求体中;不是直接暴露在URL中。
2、get请求一般安全性较低;post请求安全性略高
3、get请求的参数个数较少,post请求参数个数一般情况较多
4、get请求一般用于获取数据,post请求一般用于提交数据
5、get请求进行URL编码;post请求支持多种编码格式(参数:图片上传:File)
6、get请求会被浏览器缓存,存贮在浏览器的浏览记录中;post请求不会
7、get请求回退时不会重新提交数据;post请求可能会重新提交
1、转发只发送一次请求;重定向发送两次请求
2、转发时地址栏的地址不发生改变;重定向时地址栏的地址发生改变
3、重定向是客户端行为,转发是服务端行为
4、重定向可以跳转到任意的URL(可以是本项目下的,也可以是外部的);转发只能跳转到本项目下
5、重定向不共享数据(request存取值),转发一次请求共享数据
<jsp:forward page=""></jsp:forward>
request.getRequestDispatcher("").forward("");
response.sendRedirect("");
<a href=""></a>
<c:redirect url=""></c:redirect>
location.href=""
write只能向浏览器输出字符、字符数组、字符串等关于字符的数据信息
print()可以将各种类型(包括Object)的数据通过默认编码转换成bytes字节形式。
1、首页可以配置多个;首页的顺序从上往下,若第一个没有,则去找第二个,若都有则采用第一个;
2、若配置了首页,那么默认的index.html为首页则是失效
<welcome-file-list>
<welcome-file>demo.htmlwelcome-file>
welcome-file-list>
常见的响应码
404:
<error-page>
<error-code>404error-code>
<location>404.htmllocation>
error-page>