Servlet
1.什么是Servlet,Servlet的本质是什么
Servlet:Java服务连接器,(Server Applet),主要作用在于通过Java编写的服务端程序和前端交互的生成动态的web数据!
Servlet的本质:就是一个普通java类型,继承 HttpServlet,重写这个类中doGet()/或者doPost()方法(这两个方法常用的)
2.Servlet的执行流程
1)用户在浏览器输入访问地址 :http://localhost:8080/webApplicationContext/后台地址(url- pattern)
2)tomcat的web容器解析路径上面的/webApplicationContext/后台地址(url-pattern),找到当前web工程下的web.xml--- url-pattern是否存在,如果存在,解析xml文件中的servlet-mapping里面的url-pattern对应的
servlet-name:获取到它的Servlet名称
3)映射配置---->找到servlet基本配置--->通过servlet名称---找到servlet-class---->当前类的全限定名称
4)加载类
Class clazz = Class.forName("当前类的全限定名称") ;
5)创建当前类对象---->无参构造方法系统提供的
Object obj = clazz.newInstance();
6)通过字节码文件对象获取当前类中的成员方法所在类对象Method
Method m = calzz.getDeclareMethod("doGet",HttpServletRequest.class,HttpServletResponse.class) ;
7)取消Java语言访问检查
m.setAccessiable(true) ;
8)可以调用方法
m.invoke(obj,request,response) ;
3.xml配置方式:Servlet的步骤
1)自定义一个类,继承自HttpServlet
2)重写这个类中doGet()和doPost()方法,,doPost里面复用doGet(),获取前台参数的方式相同的!
这些方法里面完成自己的业务...
3)配置这个类在web项目下的WEB-INF里面的web.xml文件中配置
<servlet>
<servlet-name>建议和当前类名一致</servlet-name>
<servlet-class>当前类全限定名称</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>和上面的servlet-name一致</servlet-name>
<url-pattern>/名称</url-pattern>
</servlet-mapping>
如果url-pattern不是以"/"开头,启动tomcat报错----LifexxxException
4.Servlet的生命周期
Servlet是一个单例的:
servlet默认创建的时机:
在访问servlet的时候才会创建当前类对象----无参构造方法执行一次,以及init(ServletConfig config):执行一次
service():方法 称为,servlet入口(业务服务方法),可以调用多次
detroy():当前tomcat正常关闭,servlet对象被销毁---->交给jvm的垃圾回收线程来回收没有更多引用的对象!
5.Servlet的体系结构
自定义XXxServlet---->extends---->HttpServlet (重写了service方法,里面的业务逻辑就是通过获取前台的提交方式,执行不同的doXXX()方法)----->GenericServlet(里面涉及到一些生命周期相关的方法以及抽象方法service()---需要让它的子类重写)----->Servlet接口: (service(),init(Servletconfig config),destroy())
6.获取前台表单数据参数的方式
String getRequestParameter(String parameterName):通过前台的name属性的属性值:作为"参数名称"
通过参数名称获取参数内容
表单标签中表单项
文本输入框
密码输入框
必填name="xx"
Servlet--->目的前台接收参数
jsp:Java Server Page :写java代码的html页面----->目的 渲染数据--展示数据
doGet()
response.getWriter().append("<html>") ;
response.getWriter().append("<head>") ;
response.getWriter().append("<body>") ;
response.getWriter().append("</body>") ;
response.getWriter().append("</head>") ;
response.getWriter().append("</html>") ;