常用注解
官方文档:https://docs.oracle.com/javaee/7/api/toc.htm
WebServlet
@WebServlet用于定义一个Servlet,等价于下面的xml配置
LogServlet
log.LogServlet
email
[email protected]
zipcode
225800
LogServlet
/log
WebFilter
@WebFilter用于定义一个Filter,等价于下面的xml配置
LoggingFilter
filter.LoggingFilter
true
logFileName
log.txt
prefix
URI:
LoggingFilter
/*
WebListener
@WebListener用于定义一个Listener,等价于下面的xml配置
listener.SessionListener
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遍历并以表格的方式展示*/
%>
<%= customer.getId()%>
<%= customer.getName()%>
<%= customer.getAddress()%>
<%= customer.getPhone()%>
Delete
Update
<%
}
%>
对应的Java源代码如下
for (Customer customer : customers){
out.write("\n");
out.write(" \n");
out.write(" ");
out.print( customer.getId());
out.write(" \n");
out.write(" ");
out.print( customer.getName());
out.write(" \n");
out.write(" ");
out.print( customer.getAddress());
out.write(" \n");
out.write(" ");
out.print( customer.getPhone());
out.write(" \n");
out.write(" \n");
out.write(" Delete\n");
out.write(" Update\n");
out.write(" \n");
out.write(" \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%E7%8A%B6%E6%80%81%E7%A0%81/5053660?fr=aladdin#3_3
区别
转发 | 重定向 |
---|---|
地址栏是第一次发出请求的地址 | 地址栏是最后响应的地址 |
在Servlet中request对象没有变化 | 在Servlet中request对象发生了变化 |
只能转发给当前web应用的资源 | 可以重定向到任意地方(比如百度) |