目录:
Servlet 介绍 Servlet 作用 Servlet 创建
Servlet 介绍
Servlet 是指:Servlet Applet服务器应用程序。
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
说人话就是获取到请求,然后做出相应的动作。
比如你要登录操作,提交表单之后就会给服务器发送一个请求,而Servlet获取到这个请求,然后判断你是否登录成功,然后做出登录成功或失败的动作。
Servlet 作用
获取并解析请求参数;
处理业务逻辑;
给客户端响应请求结果;
Servlet 创建
Servlet类的定义方式
implements Servlet (实现接口)
extends HttpServlet (继承)推荐
Servlet创建方式
1、基于XML
Java类中的代码:创建类继承HttpServlet,并且重写doGet和doPost方法。
代码语言:javascript复制public class UserServlet extends HttpServlet {
//一般在开发过程中,我们的业务逻辑只写在一个方法中,另一方法调用写业务逻辑的方法
/**
* 当请求方法为get请求时,servlet会自动调用doGet
*/
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String userName = req.getParameter("userName");
//处理业务逻辑
PrintWriter writer = resp.getWriter();
writer.print(userName);
}
/**
* 当请求方法为post请求时,servlet自动调用doPost
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
在web.xml中配置servlet:配置Servlet名称和全限定类名,以及声明什么样的请求可以进入Servlet中。
代码语言:javascript复制<!--每个servlet都有一个servlet标签-->
<servlet>
<!-- servlet的名称-->
<servlet-name>userServlet</servlet-name>
<!-- 放置servlet的全限定类名 让tomcat使用反射创建servlet的实例 -->
<servlet-class>com.sofwin.controller.UserServlet</servlet-class>
</servlet>
<!-- 每个servlet标签,都有对应的servlet-mapping 配置什么样的请求进入到该servlet -->
<servlet-mapping>
<!-- 已有servlet的名称-->
<servlet-name>userServlet</servlet-name>
<!-- 作用:拦截请求,让复合要求的请求进入到该servlet
写法:
1.完全映射 /system/user.action。前面“/”符号意为根目录
2.路径映射 /* 任意请求都进入到 servlet中
3.类型映射 *.do|*.action 如果请求是以do或action结尾的才能进入到servlet中
注意:3种方式不能混合使用
比如:/*.doxxx 不可用
-->
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>
注意:
代码语言:javascript复制<servlet-class>全限定类名</servlet-class>
这里面放的是Servlet类的全限定类名。
什么是全限定类名?
就是这个Java类的路径。
基于Annotation(注解)
创建类继承HttpServlet:
代码语言:javascript复制//数组的作用是为一个servlet提供多种请求方式
@WebServlet(name = "roleServlet",urlPatterns = {"/role","/role1","/role2"})
public class RoleServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String userName = req.getParameter("userName");
PrintWriter out = resp.getWriter(); out.print("hello:" userName);
}
}
注意:
① WebServlet注解是类级别的注解,只能写在类的定义上面。
② 注解的级别:类级别、方法级别、属性级别。
③ 注解中的属性:name用于配置Servlet的名称,理论上要求唯一。
④ urlPatterns用于声明什么样的请求可以进到这个Servlet中。