【JAVA】WEB应用(一)Servlet详解

正文索引 [隐藏]

客户端向服务器发起请求的时候该怎么做呢,我们需要自己写一个java类继承自Servlet,然后改写五个方法
这五个方法分别对应啥东西呢
destroy()方法是释放资源,例如数据库关闭后释放空间等操作
getServletConfig()方法是返回一个Servlet本身的对象
getServletInfo()方法是得到一个Servlet的信息
init(ServletConfig arg0)这个很明显是Servlet初始化
最后一个是service(ServletRequest servletRequest, ServletResponse servletResponse)
最主要也是最重要的方法,我们响应或者请求的业务逻辑都写在里面

一、基于XML文件的配置方式

	@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse)
throws ServletException, IOException {
String idString = servletRequest.getParameter("id"); // url参数请求,里面内容写key,
System.out.println("我是Servlet,我已经接收到客户端发送的请求,请求ID参数为" + idString); // 服务端控制台打印
servletResponse.setContentType("text/html;charset=UTF-8"); // 设置内容的格式
servletResponse.getWriter().write("客户端,你好!");// 返还到网页/客户端上面的信息

}


JAVAWEB00
如果想把java内容打印在网页上怎么做,这个是无法直接访问的,我们需要去web.xml文件里面去映射
  <!-->servlet设置<-->
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.mytest.MyServlet</servlet-class>
</servlet>
<!-->servlet映射<-->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>

JAVAWEB01
name标签只要保证一样的就行了,不一定需要跟类名保持一致,但是为了可读性,还是最好保持一致,下面的/url是指让当前项目/xxxx,地址可以对服务器发起请求

二、基于注解的方式

非常简单,只需要在继承自Servlet的类里面添加一句代码即可,如图所示
JAVAWEB02
上述两种配置方式结果完全一样,建议以基于注解的方式配置最好

三、Servlet的生命周期

1、当浏览器访问Servlet的时候,Tomcat会查询当前Servlet的实例对象是否存在,如果不才尊,则通过反射机制动态创建对象,如果存在,则直接执行第三步。
2、调用init方法完成初始化操作。
3、调用service方法完成业务逻辑操作。
4、关闭Tomcat会调用destory方法,释放当前对象所占用的资源。

四、Servlet的生命周期方法:空参构造函数、init、service、destory

1、空参构造函数只调用一次,创建对象
2、init只调用一次,初始化对象
3、service调用N次,执行业务方法
4、destory只调用一次,卸载对象

五、ServletConfig

该接口是用来描述Servlet的基本信息的
getServletName()返回Servlet的名称,全类名(带包名)
getInitParameter(String key)获取init参数的值(web.xml配置,如下图)
JAVAWEB03
getInitParameterNames() 返回所有的initParamter的name值,一般用遍历初始化参数
getServletContext() 返回ServletContext对象,它是Servlet的上下文,整个Servlet的管理者

ServletConfig和ServletContext的区别

ServletConfig作用于某个Servlet实例,每个Servlet都有对应的ServletConfig,ServletContext作用于整个Web引用,一个Web应用对应一个ServletContext,多个Servlet实例对应一个ServletContext。
一个是局部对象,一个是全局对象。

六、Servlet的层次结构

Servlet ---> GenericServlet ---> HttpServlet
Http请求有很多请求,常用有四种:
1.GET 一般对应数据库读取
2.POST 一般对应数据库保存
3.PUT 一般对应修改
4.DELETE 一般对应删除