Servlet是浏览器或者其他网络请求与程序的中间层,这层用来对网络请求进行处理,常用的是HttpServlet,该类继承自Servlet,它复写了service()方法,对http的get和post请求进行了判断,get的调用doGet()方法,post的调用doPost()方法。
生命周期:
init()--初始化方法,可以在这里初始化数据或者新建数据库等需要初始化的工作,整个生命周期只会调用一次。
service()--处理请求。httpService对此进行封装了get/post的判断。
destroy()--Servlet销毁,整个生命周期只会调用一次。
一:新建一个servlet
对于代码配置一个Servlet:
第一种:右键-new class-name-extends HttpServlet--去web.xml配置访问路径。
第二种:右键-new servlet-next-finish--不需要再去配置访问路径了。生成的代码如下,这里的/MyServlet就是访问时URl匹配的部分
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public MyServlet() {
可以配置的内容:name/urlPatterns/loadOnStartup
name就是表示这个servlet的别名,urlpatterns就表示匹配的url,
loadOnStartup:默认配置下servlet只有在有到该servlet的请求时才会创建和初始化,如果需要让它跟随程序一起初始化就需要给它设置一个大于0的数值,如果两个servlet的启动优先级相同,那么就根据厂商设置自行决定先后顺序。
二。配置一个servlet
对于这三个参数的不同配置方式:
1.
@WebServlet(name="MyServlet",
urlPatterns="/er",
loadOnStartup=1)
2.
<!-- 声明这个servlet -->
<servlet>
<servlet-name>TestServelt</servlet-name>
<servlet-class>com.test.c_171030.TestServelt</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 设置他的访问路径 -->
<servlet-mapping>
<servlet-name>TestServelt</servlet-name>
<url-pattern>/myServelt</url-pattern>
</servlet-mapping>
注:对于这个url的配置可以使用通配符
只能有两种格式:*.拓展名和/url/*
*表示任意匹配。
对于匹配的规则,哪个更像匹配哪个:
比如:请求“/abc”,“/abc”和"/abc/"按照理论都可以,但是实际只匹配“/abc”,只因为更像。
对于缺省servlet:
如果该url匹配不上任何一个servlet就使用这个,这个的url-pattern写作/
三。使用servlet
对于表单请求数值的获取:
//数值获取
request.getParameter("value");//如果只有单个
request.getParameterValues("value");//如果存在一个value传多个值
request.getParameterNames();//获取所有value