单选 多选 判断 填空 简答 编程
不定时更新,所以查看时,随机刷新网页以获取最新内容
<servlet>
<servlet-name>testservlet-name>
<servlet-class>com.package.testservlet-class>
servlet>
<servlet-mapping>
<servlet-name>testservlet-name>
<url-pattern>/testurl-pattern>
servlet-mapping>
@WebServlet(name="test",urlPatterns="/test")
public class test extends HttpServlet{}
<filter>
<filter-name>testfilter-name>
<filter-class>com.package.testfilter-class>
filter>
<filter-mapping>
<filter-name>testfilter-name>
<url-pattern>/testurl-pattern>
filter-mapping>
@WebFilter(asyncSupported = true,urlPatterns = {"/loginfilter","/succ.jsp","要过滤的页面"})
在web开发中,服务器为每个用户浏览器创建一个会话(Session)对象,在保存数据时,服务器可以把用户数据写到用户浏览器独有的Session中。
HttpSession session = request.getSesson();
SessionId :<%= session.getId() %>
IsNew:<%= session.isNew() %>
MaxInactiveInterval:<%= session.getMaxInactiveInterval() %>
CreateTime:<%= session.getCreationTime() %>
LastAccessTime:<%= session.getLastAccessedTime() %>
<session-config>
<session-timeout>30session-timeout>
<session-config>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:include>
<jsp:forward>
<jsp:param>
<jsp:plugin>
<jsp:params>
<jsp:fallback>
<jsp:root>
<jsp:declaration>
<jsp:scriptlet>
<jsp:expression>
<jsp:text>
<jsp:output>
<jsp:attribute>
<jsp:body>
<jsp:element>
<jsp:invoke>
<jsp:doBody>
JSP有九大内置对象:
out 输出对象
request 请求对象
response 响应对象
session 会话对象
pageContext 页面上下文对象
application 应用程序对象
config 配置对象
page 页面对象
exception 错误处理对象
四大作用域及其范围
page 一个页面
request 一个请求
session 一次会话,单个用户使用
Application 整个服务器,全部用户共享
1.加载和实例化:
2.初始化:Servlet容器调用init()初始化Servlet对象。
3.请求处理:Servlet容器创建ServletRequest对象和ServletResponse对象,Servlet调用servlet方法来处理客户端的请求,调用doGet(),doPost()方法接收客户端的请求,并且发回相应的响应。
4.服务终止:当web被终止,或Servlet容器终止运行,或Servlet容器重载新的实例,Servlet调用destroy方法释放占用的资源。
重定向:客户端行为,从本质上讲等于两次请求,前一次请求的对象不会保存,地址栏的URL地址会改变。
请求转发:服务器的行为,是一次请求,转发后请求对象会保存,地址栏的不会改变。
URL重写:URL地址重写的原理是将该用户的Session的id信息重写到URL中,以便在服务器端进行识别不同的用户。URL重写能够在客户端停用cookies或者不支持cookies的时候仍然能够发挥作用。
隐藏表单域:将会话id添加到HTML表单元素中提交到服务器,此表单元素并不在客户端显示,兰浏览时看不到,源代码中有。
Cookie:
pageEncoding<%@page pageEncoding="UTF-8"%>
contentType:<%@page contentType="text/html;charset=UTF-8"%>
try
{
// 程序代码
}catch(ExceptionName e1)
{
//Catch 块
}finally{
// 程序代码无论是否发生异常,finally 代码块中的代码总会被执行。
//在 finally 代码块中,可以运行清理类型等收尾善后性质的语句
}
抛出异常:
throws Exception
include指令称为文件加载指令,可以将其他的文件插入JSP网页,被插入的文件必须保证插入后形成的新文件JSP页面的语法规则。该指令标签作用是在该标签的位置处,静态插入一个文件,这种属于静态包含。
而include动作元素的功能是动态包含一个文件,即将当前JSP页面内、被包含的文件各自独立编译为字节码文件。当执行到该动作标签处,才加载执行被包含文件的字节码。这种include动作元素属于动态包含。
格式:
${expr}
隐含对象 | 描述 |
---|---|
pageScope | page作用域 |
requestScope | request作用域 |
sessionScope | session作用域 |
applicationScope | application作用域 |
param | Request对象的参数,字符串 |
header | HTTP信息头,字符串 |
headerValues | HTTP信息头,字符串集合 |
initParam | 上下文初始化参数 |
cookie | Cookie值 |
pageContext | 当前页面的pageContext |
过滤器也称为“拦截器”,通过过滤器,可以在用户访问某个web资源之前,对访问的请求和相应进行拦截,从而实现一些特殊的功能。
当用户的请求到达所请求的资源之前,可以借助过滤器来改变这些请求的内容,此过程也称为“预处理”。当执行结果要响应到用户之前,可经过过滤器修改相应输出的内容,此过程也称为“后处理”。
在一个web应用中,可以部署多个过滤器,这些过滤器组成了一个过滤器链,过滤器链中的每个过滤器负责特定的任务,客户端的请求可以在这些过滤器之间进行传递,直到达目标资源。
public class ShowTimeServlet extends HttpServlet{
protected void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
ServletContext context = getServletContext();
Integer times = (Integer) context.getAttribute("times");
if(tims == null){
times = new Integer(1);
}else{
times = new Integer(times.intValue() + 1);
}
//设置中文编码,否则会乱码
resp.setContextType("text/html;charset = GB2312");
//得到输出流对象
PrintWeiter out = resp.getWriter();
out.pringln("当前页面被访问了"+times+"次");
//设置属性,将times保存到当前的上下文中
context.setAttribute("temes",times);
}
protected void doPost(HttpServletRequest req,HttpServletResponse resp)throw ServletException,IOException{
this.doGet(req,resp);
}
}
A.jsp
<form action="B.jsp">
<p style="color: red;font-weight: ">${msg }p>
<input type="text" name="edge1" value="${sessionScope.e1 }">
<input type="text" name="edge2" value="${sessionScope.e2 }">
<input type="text" name="edge3" value="${sessionScope.e3 }"><br><br>
<input type="submit" value="计算" >
form>
B.jsp
<%
double e1 = Double.valueOf(request.getParameter("edge1"));
double e2 = Double.valueOf(request.getParameter("edge2"));
double e3 = Double.valueOf(request.getParameter("edge3"));
double result =0.0;
session.setAttribute("e1", e1);
session.setAttribute("e2", e2);
session.setAttribute("e3", e3);
if((e1+e2)>e3 && (e1+e3)>e2 && (e2+e3)>e1){
double p=(e1+e2+e3)/2;
result=Math.sqrt(p*(p-e1)*(p-e2)*(p-e3));
}
else{
request.setAttribute("msg", "该三边无法构成三角形");
result = -1;
}
%>
<!--导入A.jsp -->
<jsp:include page="A.jsp">
</jsp:include>
计算结果为:<%=result %>
<a href="A.jsp">点击这里继续计算</a>
A.jsp
<form action="B.jsp">
<input type="text" name="num1" value="${sessionScope.num1 }">
<select id="operator" name="operator">
<option value="+" if test="${sessionScope.op == '+'}">selectedc:if>>+option>
<option value="-" if test="${sessionScope.op == '-'}">selectedc:if>>-option>
<option value="*" if test="${sessionScope.op == '*'}">selectedc:if>>*option>
<option value="/" if test="${sessionScope.op == '/'}">selectedc:if>>/option>
select>
<input type="text" name="num2" value="${sessionScope.num2 }">
<input type="submit" value="计算">
form>
B.jsp
<%
double num1 = Double.valueOf(request.getParameter("num1"));
double num2 = Double.valueOf(request.getParameter("num2"));
String op = request.getParameter("operator");
session.setAttribute("num1", num1);
session.setAttribute("num2", num2);
session.setAttribute("op", op);
double result = 0.0;
if(op.equals("+")){
result = num1 + num2;
}else if(op.equals("-")){
result = num1 - num2;
}else if(op.equals("*")){
result = num1 * num2;
}else{
result = num1 / num2;
}
%>
<jsp:include page="A.jsp"></jsp:include>
计算结果:<%=result %><br>
<a href="A.jsp">点击这里继续计算</a>
过滤器的配置:
<filter>
<filter-name>BFilterfilter-name>
<filter-class>web.BFilter<filter-class>
filter>
<filter-mapping>
<filter-name>BFilterfilter-name>
<filter-pattern>/AServletfilter-pattern>
filter-mapping>
<filter>
<filter-name>AFilterfilter-name>
<filter-class>web.AFilter<filter-class>
filter>
<filter-mapping>
<filter-name>AFilterfilter-name>
<filter-pattern>/*filter-pattern>
filter-mapping>
过滤器的执行顺序和url-pattern标签匹配的精确程度无关,只和他们的filter-mapping标签在web.xml文件中的顺序有关,配置在上的先执行。