常用注解

官方文档:https://docs.oracle.com/javaee/7/api/toc.htm

WebServlet

@WebServlet用于定义一个Servlet,等价于下面的xml配置

<servlet>
<servlet-name>LogServlet</servlet-name>
<servlet-class>log.LogServlet</servlet-class>
<init-param>
<param-name>email</param-name>
<param-value>965019948@qq.com</param-value>
</init-param>
<init-param>
<param-name>zipcode</param-name>
<param-value>225800</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>LogServlet</servlet-name>
<url-pattern>/log</url-pattern>
</servlet-mapping>

WebFilter

@WebFilter用于定义一个Filter,等价于下面的xml配置

<filter>
<filter-name>LoggingFilter</filter-name>
<filter-class>filter.LoggingFilter</filter-class>
<async-supported>true</async-supported>
<init-param>
<param-name>logFileName</param-name>
<param-value>log.txt</param-value>
</init-param>
<init-param>
<param-name>prefix</param-name>
<param-value>URI:</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LoggingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

WebListener

@WebListener用于定义一个Listener,等价于下面的xml配置

<listener>
<listener-class>listener.SessionListener</listener-class>
</listener>

WebInitParam

指定Servlet或Filter的初始化参数

ServletConfig和ServletContext的区别

  • ServletConfig:

    • Servlet容器初始化Servlet时,Servlet容器会给该Servlet传入一个ServletConfig对象

      void init (ServletConfig var1) throws ServletException

    • 该Servlet的配置

  • ServletContext:

    • ServletContext表示Servlet应用程序,每个Web应用程序只有一个上下文

Attribute

相关方法

  • void setAttribute(String name, Object o)
  • Object getAttribute(String name)
  • Enumeration getAttributeNames()
  • removeAttribute(String name)

范围

pageContext < request < session < application

  • pageContext:当前JSP页面
  • request:当前请求
  • session:一次会话
  • application:当前web应用

JSP脚本片断

<%
for (Customer customer : customers){
/*此处“{ }”断开,使得JSP页面能将customers遍历并以表格的方式展示*/
%>
<tr>
<td><%= customer.getId()%></td>
<td><%= customer.getName()%></td>
<td><%= customer.getAddress()%></td>
<td><%= customer.getPhone()%></td>
<td>
<a href="delete.do?id=<%= customer.getId()%>" class="delete">Delete</a>
<a href="">Update</a>
</td>
</tr>
<%
}
%>

对应的Java源代码如下

for (Customer customer : customers){

      out.write("\n");
out.write(" <tr>\n");
out.write(" <td>");
out.print( customer.getId());
out.write("</td>\n");
out.write(" <td>");
out.print( customer.getName());
out.write("</td>\n");
out.write(" <td>");
out.print( customer.getAddress());
out.write("</td>\n");
out.write(" <td>");
out.print( customer.getPhone());
out.write("</td>\n");
out.write(" <td>\n");
out.write(" <a href=\"delete.do?id=");
out.print( customer.getId());
out.write("\" class=\"delete\">Delete</a>\n");
out.write(" <a href=\"\">Update</a>\n");
out.write(" </td>\n");
out.write(" </tr>\n");
out.write(" "); }

请求转发和重定向

转发

request.getRequestDispatcher("/index.jsp").forward(request,response);

重定向

response.sendRedirect("query.do");

302 Move temporarily

​ 请求的资源临时从不同的 URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。

​ 上文有提及。

​ 如果这不是一个 GET 或者 HEAD 请求,那么浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。

​ 注意:虽然RFC 1945和RFC 2068规范不允许客户端在重定向时改变请求的方法,但是很多现存的浏览器将302响应视作为303响应,并且使用 GET 方式访问在 Location 中规定的 URI,而无视原先请求的方法。状态码303和307被添加了进来,用以明确服务器期待客户端进行何种反应。

https://baike.baidu.com/item/HTTP状态码/5053660?fr=aladdin#3_3

区别

转发 重定向
地址栏是第一次发出请求的地址 地址栏是最后响应的地址
在Servlet中request对象没有变化 在Servlet中request对象发生了变化
只能转发给当前web应用的资源 可以重定向到任意地方(比如百度)

Servlet基础知识点整理的更多相关文章

  1. HTML&&CSS基础知识点整理

    HTML&&CSS基础知识点整理 一.WEB标准:一系列标准的集合 1. 结构(Structure):html 语言:XHTML[可扩展超文本标识语言]和XML[可扩展标记语言] 2. ...

  2. TypeScript 基础知识点整理

    一.TypeScript的特点 1.支持ES6规范 2.强大的IDE支持(集成开发环境) 允许为变量指定类型,减少你在开发阶段犯错误的几率. 语法提示,在IDE编写代码时,它会根据你所处的上下文把你能 ...

  3. 【Android 面试基础知识点整理】

    针对Android面试中常见的一些知识点整理,Max 仅仅是个搬运工.感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章.对于当中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正 ...

  4. Python基础知识点整理(详细)

    Python知识点整理(详细) 输出函数 print()可以向屏幕打印内容,或者在打开指定文件后,向文件中输入内容 输入函数 input([prompt])[prompt] 为输入的提示字符.该函数返 ...

  5. python 基础知识点整理 和详细应用

    Python教程 Python是一种简单易学,功能强大的编程语言.它包含了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言 ...

  6. PHP初入,基础知识点整理(样式表&选择器的使用整理)

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  7. Servlet基础知识点

    一.web.xml 的加载顺序是: ServletContext-> context-param ->listener -> filter -> servlet,而同个类型之间 ...

  8. java基础知识点整理

    1.&和&&的区别? &:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true. &&:短路与,如果第一个表达式为false时,第二 ...

  9. python基础知识点整理

    序列 描述 sequence(序列)是一组有顺序的元素的集合.序列可以包含一个或多个元素,也可以没有任何元素.我们之前所说的基本数据类型,都可以作为序列的元素. 序列有两种:tuple(定值表: 也有 ...

随机推荐

  1. MVVM Light 新手入门(1):准备阶段

    1.新建WPF空白项目. 2.NuGet 程序包中安装 3.根据MVVM分层结构,建立包含Model.View.ViewModel三层文件夹 如图: 1.View负责前端展示,与ViewModel进行 ...

  2. 背水一战 Windows 10 (43) - C# 7.0 新特性

    [源码下载] 背水一战 Windows 10 (43) - C# 7.0 新特性 作者:webabcd 介绍背水一战 Windows 10 之 C# 7.0 新特性 介绍 C# 7.0 的新特性 示例 ...

  3. cad.net的undo返回操作

    这是提供给许多从lisp转移到c#的开发人员的一个函数,这个函数利用后绑代码实现undo返回操作. 本代码由edata提供: edata博客 /// <summary> /// 命令动作编 ...

  4. GITLAB安装笔记

    CentOS 7 最小安装后操作 设置时区timedatectl set-timezone Asia/Shanghai 添加 Gitlab 清华源 vi /etc/yum.repos.d/gitlab ...

  5. POJ 2860

    #include<iostream> #define MAXN 20 using namespace std; int a_1[MAXN]; int a_2[MAXN]; int main ...

  6. oracle RAC 跨网段客户端访问 报ORA-12170

    场景描述: 服务器所在网段为20,在同一网段的机器客户端远程连接SCAN IP 可以正常访问,当时更换了网段之后,15网段的机器通过oracle客户端连接服务器SCAN ip 无法正常访问,telne ...

  7. xamarin 编译出现Xamarin.Build.Forms.Tasks.GetTaskAbi 无法加载的错误解决方法

    最新升级最新的vs2017后发现编译xamarin forms 会出现错误 Xamarin.Forms.Build.Tasks.GetTasksAbi task could not be loaded ...

  8. Vue图片懒加载插件 - vue lazyload的简单使用

    Vue module for lazyloading images in your applications. Some of goals of this project worth noting i ...

  9. github绑定自己的域名

    1.进入需要绑定域名的项目里面,然后新建一个文件CNAME,没有后缀的. 2.在文件里面输入你的域名,然后保存.github这边就完成了. 3.然后去你购买域名的网站,进入控制台,找到域名,然后域名解 ...

  10. 在Idea2017.1中编译时发生如下的错误

    错误 在Idea2017.1中编译时发生如下的错误 Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8 Information:java: Errors ...