Servlet是什么,通常都是这样来说明的,它主要充当客户请求(web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
tomcat可以看做是servlet的容器。
客户端发送请求给web服务器,web服务器启动并调用servlet,servlet容器负责解析数据包,将解析后的数据交给servlet处理。
Servlet主要功能:
1.创建并放回一个包含基于请求的动态内容的JSP页面
2.创建可嵌入到现有HTML页面和JDP页面中的部分代码,与其他服务器资源进行通信
3.处理多个客户端连接,接受多个客户端输入,将结果发送到多个客户机上。
处理逻辑:浏览器发送http请求 -->tomcat服务器 -->Servlet --> 执行doget,dopost方法 -->返回数据
具体流程:tomcat监听端口,当请求发送过来后,根据url结合web.xml中的信息匹配,找到具体的哪一个servlet并有其处理,servlet处理请求将结果返回给tomcat,tomcat将数据返回给浏览器。
ServletConfig主要功能:
1.表示当前Servlet在web.xml中的匹配信息
2.当使用init-param配置参数后,web创建servlet对象时,将参数封装进ServletConfig中,servlet执行init方法时,将ServletConfig对象传递给Servlet,通过ServletConfig获得当前初始化参数信息。
一般将数据库信息(用户名,密码等),编码方式等配置信息放在web.xml中,信息改变时,可直接修改web.xml。
具体实例代码(IDEA):
操作基于web项目在tomcat部署运行:Intellij IDEA 创建Web项目并在Tomcat中部署运行
<servlet>
<servlet-name>Helloservletconfig</servlet-name>
<servlet-class>Helloservletconfig</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>san</param-value>
</init-param>
<init-param>
<param-name>passwoed</param-name>
<param-value>123456</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Helloservletconfig</servlet-name>
<url-pattern>/Helloservletconfig</url-pattern>
</servlet-mapping>
class:Helloservletconfig
Httpservlet是Servlet对http请求协议处理的实现
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;
public class Helloservletconfig extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//servletconfig 可以获取servlet在配置的一些信息
ServletConfig config = getServletConfig();
//1.获取servlet名称,获取到的是配置servlet里面的servlet-name的文本内容
String servletName = config.getServletName();
System.out.print(servletName);
//2.获得具体的某一个参数
String address = config.getInitParameter("username");
System.out.println("username");
//3.获取所有的参数名称
Enumeration<String> names= config.getInitParameterNames();
//遍历取出所有的参数名称
while(names.hasMoreElements()){
String key = (String) names.nextElement();
String value = config.getInitParameter(key);
System.out.println(key + value);
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
理解较为浅显,有更深的理解再来补充…