什么是Servlet?
Servlet 是JavaWeb开发的基石,与平台无关的服务器组件,它是运行在Servlet容器/web应用服务器(Tomcat)上的,负责与客户端进行通信
Servlet运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库之间的中间层
Servlet的功能:
- 创建并返回基于客户请求的HTML页面
- 与数据库进行通信
如何访问Servlet?
Servlet本身是一组接口,要想使用Servlet我们需要自定义一个类,并且实现Servlet接口,这个类就具备了接受客户端请求以及做出响应的功能
MyServlet.java是我自己定义的一个文件
然后实现Servlet接口:
// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
public class MyServlet implements Servlet{
@Override
public void init(ServletConfig servletConfig) throws ServletExction{
}
@Override
public ServletConfig getServletConfig(){
retur null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse){
}
@Override
public String getServletInfo(){
}
@Override
public void destroy(){
}
}
其中Servlet是最核心的方法
那么如何访问这个servlet呢?
当我们通过Tomcat打包之后,会注意到我们IDEA左侧出现了一个文件:mytomcat001_war_exploded
mytomcat001_war_exploded相当于默认的根目录,是打包之后生成的文件,默认下会访问index.jsp
由于Servlet文件是不能直接通过客服端浏览器访问的,其实也可以说客户端不能直接访问WEB-INF中的文件
所以要想访问Servlet文件,只能通过映射的方式来简介的访问Servlet,映射需要开发者手动配置,有两种配置方式
第一种:基于XML文件的配置方式
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.southwind.sevlet.Myservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
通过name相同可以达到映射匹配的联系。由于name相同,所以通过/myservlet 就可以访问到上面的文件路径
只要两个name一致即可!
做个例子:
我在MyServlet 的 service()方法中加入内容:
// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
public class MyServlet implements Servlet{
@Override
public void init(ServletConfig servletConfig) throws ServletExction{
}
@Override
public ServletConfig getServletConfig(){
retur null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse){
string id=servletRequest.getParameter("id");
System.out.println("我是Servlet,我已经接收到了客户端发来的请求,参数是"+id);
servletResponse.setContentTyep("text/html;charset=UTF-8");//显示的文本格式
servletResponse.getWriter().write("客户端你好,我已经接受到你的请求");
}
@Override
public String getServletInfo(){
}
@Override
public void destroy(){
}
}
然后我在浏览器中输入: locallhost:8080/myservlet?id=1
第二种方式:基于注解的方式
我们可以把XML中的内容全部删掉
在Servlet的上面直接写入:@WebServlet()
@WebServlet("/myservlet")
public class HelloServlet implements Servlet{}
现在普遍都使用注解的方式