Servlet 是 Java Web 开发的基⽯,与平台⽆关的服务器组件,它是运⾏在 Servlet 容器/Web 应⽤服务器/Tomcat,负责与客户端进⾏通信。 主要功能:
Servlet 本身只是⼀组接⼝,我们需要定义⼀个类,并且实现 Servlet 接⼝,这个类就具备了接受客户端请求以及做出响应的功能。
我们到项目中去学习,新建一个MyServlet类,实现Servlet接口,重写方法
public class MyServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
//初始化工作
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//主要的核心,操作基本都写在这里,主要的业务实现。
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
//常用于释放资源
}
}
我们在service方法中写一些代码,看看效果。
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("我是servlet,我已经在工作了 !");
}
到这里我们会有一个疑问,我们如何访问这个servlet类呢,由于浏览器并不能直接访问 Servlet ⽂件,我们只能通过映射的⽅式来间接访问 Servlet,映射需要开发者⼿动配置,有两种配置⽅式。
注意:是写在WEB-INF下的web.xml中
直接在MyServlet类上面添加一个注解WebServlet
括号中为访问地址
@WebServlet("/hello")
public class MyServlet implements Servlet{}
只要其中一种就可以了,不用同时使用。
我们到浏览器中去访问http://localhost:8080/new_javaweb_test_war_exploded/hello
页面空白,但是没有报错,所以我们成功访问了,我们到控制台查看是否有打印出一句话。
很明显,我们成功访问到了自己写的Servlet。
那么我们如何往页面中输出点东西呢,同样的,我说了功能代码都应该写在service方法中
servletResponse.getWriter().write("这里是我的Servlet,欢迎进入新世界 !");
我们加入代码后在浏览器中发现中文乱码了,这时候不用慌,我们在这句代码这前再加一句
servletResponse.setContentType("text/html;charset=UTF-8");
此时该方法完整的代码为
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("我是servlet,我已经在工作了 !");
servletResponse.setContentType("text/html;charset=UTF-8");
servletResponse.getWriter().write("这里是我的Servlet,欢迎进入新世界 !");
}
运行就可以看到页面输出结果啦。
我推荐大家使用Debug来运行项目,这样可以节省我们在启动项目的大量时间。
在idea中可以做到直接重新编译你修改的东西,而不用整个项目重新启动。
如果做到这一点,首先你要确保你开启了update classes and resources,运行项目时使用Debug。
细心的你不难发现,我们的service方法中还没有使用到servletRequest参数,其实这个是用来获取参数之类的。
示例:
String id = servletRequest.getParameter("id");
servletResponse.getWriter().write("你好,我们已经获取到你的ID为:"+id);
Debug运行,发现浏览器中显示ID为Null,此时你在地址后面加入?id=10086
,就可以看到效果啦。