Servlet
Servlet
动态资源和静态资源
servlet运行在服务端,必须在web项目中开发;在服务器容器中运行;HttpServletRequest对象打包请求信息;- 获取请求的信息;
- 根据参数获取要响应的数据;
- 将数据存入
Response
HttpServletResponse为响应对象,最后转为报文返回给客户端;

Servlet开发流程
入门
用户名称检测重名;
-
创建
javaWEB项目,添加tomcat依赖; -
重写
service方法,定义业务处理方法; -
在
web.xml中配置Servlet 请求映射路径;
http://127.1.0.1/demo02/username;
请求体:
username = name;
配置web.xml文件
- 配置
servlet类,起别名; servlet-class告诉tomcat要实例化的类;servlet-name关联请求映射路径;
<servlet>
<servlet-name>Username</servlet-name>
<servlet-class><!-- 代码调用路径 -->
com.alone.servlet.Hello
</servlet-class>
</servlet>
<!--请求映射路径-->
<servlet-mapping>
<servlet-name>Username</servlet-name>
<!-- 请求要有 / 前缀 -->
<url-pattern>/userServlet</url-pattern> <!--请求url-->
</servlet-mapping>
servlet api.jar导入问题
tomcat lib目录下;添加依赖时候会自动导入servlet.api.jar;部署时候会使用服务器tomcat的jar包;
Content-Type响应头
- MIME类型响应头,说明媒体的类型和文件类型,响应的数据类型;
- MIME类型告诉客户端响应数据类型,以便用适合方式解析文件;
tomcat会在conf/web.xml中寻找文件的MINE类型;指定Content-Type;不设置默认为
html;请求中也会有
Content-Type;
url-parttern映射路径
tomcat会根据http路径的信息寻找url-pattern,再根据servlet-name寻找对应的servlet-class通过反射处理;
一个
servlet可以对应多个url-pattern路径,不同的servlet不能有相同的url-pattern;
- 精确匹配
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/Se</url-pattern>
</servlet-mapping>
/后指定精确路径;
- 模糊匹配
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/</url-pattern> <!-- 模糊匹配 -->
<!-- <url-pattern>/*</url-pattern> <!– 模糊匹配 –>-->
</servlet-mapping>
当只用
/模糊匹配所有路径均会,走servlet,除了jsp文件路径除外;当使用了/*后就包括了jsp文件;
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<!-- 匹配以/a/开头的所有文件 -->
<url-pattern>/a/*</url-pattern>
</servlet-mapping>
*的位置可以匹配任意资源:
/a/*匹配前缀;*.txt匹配后缀;
Servlet注解
- 使用 注解简化
web.xml中的映射路径
// 使用webServlet注解
@WebServlet("/UserServlet")
使用注解后就不再配置
web.xml;
启动子集出错,
servlet有相同的路径名称;路径格式不对;
@WebServlet(urlPattern = {"路径1","路径2","路径3",...})
urlPattern可以对应多个路径;
Servlet生命周期
-
实例化;初初始化;接受请求,处理请求;销毁;
-
不建议在
Servlet中修改成员变量,会引发线程安全问题;
Servlet在tomcat中是单例的;多个线程请求Servlet会执行同一个Servlet的方法;
@WebServlet(value = "/ServletLife",loadOnStartup = 1)
loadStartUp = ?设置启动时候实例化顺序;数字越小等级越优先;
default-servlet遍历所有静态的资源文件寻找指定文件,再在respose中返回资源;
Servlet继承结构
interface Servlet接口:

GenericServlet类

重写无参的
init()方法,将config参数交付给带参的init()(会调用无参的init())方法处理;
对
service()方法进行了实现(空函数体);
HttpServlet
service(Servlet...)方法将ServletRequest方法和ServletRepose参数进行了转化,转为HttpServlet类;
对于
service(HttpServlet...)方法进行了分发;全部调用405;自定义的方法一定要重写service方法;
以前建议处理时候重写
doget,dopost方法;一个调用另一个;

浙公网安备 33010602011771号