什么是Servlet?
Servlet 是运行在 Web 服务器或应用服务器上的java程序,是Java EE规范之一(一种接口)。
它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层,即接收客户端发送过来的请求并且响应数据给客户端。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
💡配置Servlet
创建一个Java类并实现Servlet接口(一般通过继承HTTPServlet类去实现servlet)
重写方法,实现逻辑操作
在web.xml中配置这个servlet的访问地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14<!-- 给tomcat配置servlet相关信息 -->
<servlet>
<!-- 写明servlet的名字(一般使用类名即可) -->
<servlet-name>MyServlet</servlet-name>
<!-- 写明servlet的全类名 -->
<servlet-class>servlet.MyServlet</servlet-class>
</servlet>
<!-- 给servlet配置访问地址 -->
<servlet-mapping>
<!-- 写明需要配置访问地址的servlet -->
<servlet-name>MyServlet</servlet-name>
<!-- 写明为该servlet配置的访问地址 -->
<url-pattern>/myServlet</url-pattern>
</servlet-mapping><url-pattern>/myServlet</url-pattern>
标签中/
的作用:相当于拼接到http://ip:port/工程路径
后,即http://ip:port/工程路径/myServlet
HTTP协议
什么是HTTP协议
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准,即客户端与服务器之间通信、传输数据需要遵守的规则。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
请求与响应
- 客户端给服务器发送数据为请求,请求分为GET、POST请求
- 服务器给客户端回传数据为响应
💡HTTP协议内容
请求/响应行
请求/响应头:
属性名:属性值请求/响应体:
重要,自行阅读学习
常见响应码
- 200:表示请求成功
- 302:表示请求重定向
- 404:表示服务器找不到该请求地址(地址有错)
- 500:表示服务器内部错误(代码有错)
💡表单处理、常用API
request对象常用方法 | 方法介绍 |
---|---|
getParameter(String name) | 返回name指定参数的参数值 |
getParameterValues(String name) | 返回包含参数name的所有值的数组 |
setAttribute(String,Object) | 存储此请求中的属性 |
getAttribute(String name) | 返回指定属性的属性值 |
getContextPath() | 返回当前WEB项目相对路径 |
getMethod() | 获取请求类型 |
getSession() | 获取Session对象 |
getCookies() | 获取所有Cookie,返回一个Cookie数组 |
request对象常用方法 | 方法介绍 |
---|---|
setHeader() | 设置消息头 |
setStatus() | 设置状态码 |
addCookie() | 添加Cookie |
getWriter() | 获取通向浏览器的字符流 |
获取/回传数据
1 | <form action="http://localhost:8080/jsp_war_exploded/myServlet" method="get"> |
1 | String username = req.getParameter("username"); |
1 | resp.getWriter().println("<div>这是一个div</div>"); |
http://localhost:8080/jsp_war_exploded/myServlet?username=111&password=222
使用?传递参数
请求转发与重定向
1 | String username = req.getParameter("username"); |
1 | String username = req.getParameter("username"); |
请求转发的特点:
- 浏览器地址栏没有变化
- 一次请求
- 共享request中的数据
- 可以转发到WEB-INF目录下(工程路径下)
1 | resp.sendRedirect(req.getContextPath()+"/myServlet2"); |
重定向的特点:
- 浏览器地址栏发生变化
- 两次请求
- 不共享request中的数据
- 不能访问WEB-INF目录下资源
- 可以访问工程外的资源
💡Filter过滤器
自行学习
中文乱码问题
1 | req.setCharacterEncoding("UTF-8"); |
相关阅读材料
作业
熟悉servlet、jsp并实现一些功能,并写一篇博文。
博文内容要求(必须要求):
写一篇博文记录你使用servlet、jsp实现功能时遇到了哪些困难、不理解、不知道该如何实现的地方,以及写上解决的过程与结果(未解决的也可以写上有哪些疑惑),或者学习笔记等等皆可。
功能实例(仅参考,不是最低/最高标准):
- 含有登陆/注册页面、其他页面。
- 登录功能:手动输入信息,符合已存在的用户信息则成功登录。
- 注册功能:手动输入信息,不能重复注册已存在的用户名,否则注册失败。
- 用户展示:在页面上展示所有已经注册的用户的信息。
- 登陆过滤:其他页面,只有登陆成功后才可访问,否则跳转至登陆页面。
- 其他页面:利用循环控制语句或其他工具功能输出由后台传递而来的数据。
- 等等
提交内容与时间:
提交内容:程序源码+博文链接
提交时间:7.27日晚零点前,将压缩包命名为班级+姓名+学号发送至707823814@qq.com
可能时间太短无法实现太多功能,没有关系,程序源码附上自己实现了的东西就行,没有实现完整也没关系,实现了更多功能也挺好,这个作业打分主要看你的博文里面写的记录内容,程序主要是用来练习以熟悉servlet和jsp的,毕竟大作业会用到。