纲要目录
这是一个笔记型博客,可以快速查阅内容
JavaSE(待补充)
IO
JavaWeb
Servlet
- 文件目录架构(待补充)
- HTTP请求和HTTP响应
HTTP请求由一个请求行,若干个请求头,请求体组成
请求部分 | 格式 |
---|---|
请求行 | 请求方式 + URL字段+ 协议版本 |
请求头 | key : value键值对 |
请求体 | key : value键值对 |
请求方式有POST(发布),GET(获取),DELETE(删除),PUT(更新),URL形如/post.html,协议版本如HTTP/1.0或HTTP/1.1
HTTP响应由一个响应行,若干请求头,请求体组成
响应部分 | 格式 |
---|---|
响应行 | 协议版本+状态码+描述 |
响应头 | key : value键值对 |
响应体 | 文档内容 |
响应状态码有200(成功),302(请求重定向),404(页面不存在),500(服务器错误)等等
请求头和请求体,响应头和响应体间要插入一个空行!
- Servlet的构建基础
创建一个Servlet新建一个类文件,其中的类继承HttpServlet,并重写doGet和doPost等方法,如下:
public class HelloWorld extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//code~~~
}
以下代码放在web.xml中,可以映射HelloWorld.java(servlet类文件)和/helloWorld(servlet映射,可以直接访问此地址来调用此servlet)
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/helloWorld</url-pattern>
</servlet-mapping>
现在的新式映射方法是直接在servlet.java中写入注解
@WebServlet(name = "HelloWorld",urlPatterns = "/helloWorld")
- 获取请求内容和响应请求
Servlet有获取内容的HttpServletRequest接口和相应请求的HTTPServletResponse方法,它们都在doGet的参数列表里,可以直接使用request,response参数来使用这两个接口提供的方法。
比如request有如下常用方法:
方法名 | 功能 |
---|---|
getMethod | 获得请求方式 |
getRequestURI | 获得URI |
getProtocol | HTTP协议版本 |
getRemotePort | 访问客户的端口号 |
getRemoteAddr | 访问客户的IP地址 |
getHeaderNames | 获取请求头的keys(返回值是一个Enumeration) |
getHeader | 获取指定请求头的value(getHeaders可获得同名请求头) |
getParameter | 获取指定请求的参数(常用此法获得前端表单数据) |
再比如response有如下常用方法:
方法名 | 功能 |
---|---|
setStatus | 设置响应状态码(如果出错则应该用sendError) |
sendError | 发送错误信息 |
setHeader | 设置响应头(可以向前端发送许多动作比如refresh) |
addHeader | 附加响应头(与set的区别在于add不会覆盖同名响应头) |
setContentType | 设置响应的类型(比如要传送html文档应为text/html) |
- ServletConfig和ServletContext
前者只能配置于一个Servlet对象,而后者是全局配置,后者还可以通过全局属性与Web容器交互
应在web.xml中添加配置信息,如下
<!--Config-->
<init-param>
<param-name>email</param-name>
<param-value>www.linwei.com</param-value>
</init-param>
<!--Context-->
<context-param>
<param-name>oemail</param-name>
<param-value>www.oinwei.com</param-value>
</context-param>
要获取这些信息,可使用
this.getServletConfig().getInitParameter("param-name") //Config
this.getServletContext().getInitParameter("param-name")//Context
可对ServletContext上下文使用
setAttribute(),getAttribute(),removeAttribute(),getAttributeNames()
来操作配置属性信息