赞
踩
<servlet>
<servlet-name>OneServlet</servlet-name>
<servlet-class>com.wangxiangqian.controller.OneServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
响应对象将结果写入响应体
//通过响应对象,向Tomcat索要输出流
PrintWriter out = response.getWriter();
//通过输出流将执行结果以二进制的形式写入响应体
out.write(内容);
out.print(内容);//实际开发中使用
设置响应头中content-type属性值,从而控制浏览器使用对应编译器
//设置响应头content-type,提示浏览器使用特定解析器
response.setContentType("text/html;charset=utf-8");
设置响应头location属性,将一个请求地址赋值给location,从而控制浏览器向指定服务器发请求
//通过响应对象,将地址赋值给响应头中location属性
response.sendRedirect("http://www.baidu.com");//浏览器自动通过地址栏发起请求(get方式)
可以读取Http请求协议包中【请求行】信息
//读取url信息
String url = request.getRequestURL().toString();
//读取method信息
String method = request.getMethod();
//读取uri信息
String uri = request.getRequestURI();
读取保存在Http请求协议包中【请求行】或者【请求体】中请求参数信息
//通过请求对象获得请求头或者请求体中所有请求参数名
Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()){
String paramName = (String)paramNames.nextElement();
//通过name来取value
String value = request.getParameter(paramName);
}
//浏览器以post方式发送请求,请求参数保存在请求体,请求体二进制内容由当前请求对象(request)负责编码,request默认使用[ISO-8895-1
//通知请求对象,使用utf-8字符集进行解码
requset.setCharacterEncoding("utf-8");
可以代替浏览器向Http服务器申请资源文件调用
<welcome-file-list>
<welcome-file>login.html</welcome-file>
<!--servlet作为默认欢迎资源时,开头斜线必须抹掉-->
<welcome-file>user/find</welcome-file>
</welcome-file-list>
<!--自定义设置自定义默认文件定位规则,此时Tomcat自带定位规则将失效-->
<!--index.html index.htm index.jsp-->
重定向解决方案
//通过响应对象,将地址赋值给响应头中location属性
response.sendRedirect("http://www.baidu.com");
//浏览器自动通过地址栏发起请求(get方式)
请求转发解决方案
//通过当前请求对象生成资源文件申请报告对象
RequestDispartcher report = request.getRequestDispatcher("/资源文件名");
//将报告对象发送给Tomcat(根据请求协议包决定请求方式)
report.forward(当前请求对象,当前响应对象);
//通过请求对象向Toncat索要当前网站的全局作用域对象
ServletContext application = request.getServletContext();
//将数据添加到全局作用域对象作为共享数据
application.setAttribute("key",数据);
//从全局作用域对象得到指定关键字对应数据
Object 数据 = application.getAttribute("key");
//从全局作用域中删除数据
application.removeAttribute("key");
//创建一个cookie对象,保存共享数据(当前用户数据)
Cookie card = new Cookie("key","abc");
//将cookie写入响应头,交给浏览器
response.addCookie(card);
//调用请求对象从请求头得到浏览器返回的Cookie
Cookie cookieArray[] = request.getCookies();
//获取Cookie中的信息
String key = cookieArray[0].getName();
String value = cookieArray[0].getValue();
//cookie在硬盘上存活1分钟
cookie变量.setMaxAge(60);
//1.调用请求对象向Tomcat索要当前用户在服务端的私人储物柜
HttpSession session = request.getSession();
//2.将数据添加到用户私人储物柜
session.setAttribute("key1",共享数据);
//从会话作用域对象得到其他servlet提供的共享数据
Object 共享数据 = session.getAttribute("key1")
//取出session中所有的key取出来,存放一个枚举对象
Enumeration goodsName = session.getAttributeNames();
While(goodsName.hasMoreElements()){
String goodsName = (String).goodsName.nextElement();
int goodNum = (int)session.getAttribute(goodsName)
}
浏览器关闭时,cookie销毁,用户与Session关系切断
Tomcat为每一个HttpSession设置了30分钟空闲时间,空闲时间达到30分钟,Tomcat就会销毁掉这个HttpSession
空闲时间手动修改
<session-config>
<!--设置空闲时间为5分钟-->
<session-timeout>5</session-timeout>
</session-config>
//将数据添加到请求作用域对象中的attribute属性中
req.setAttribute("key",数据);
//申请调用其他servlet
req.getRequestDispatcher("/其它Servlet").forward(req,response);
//从当前请求作用域对象中的attribute中拿数据
Object 数据 = req.getAttibute("key");
实现接口
public class OneListener implements ServletContextListener{
//Context作用域对象创建时调用
public void contextInitialized (ServletContextEvent sce){
//获取全局作用域对象
sce.getServletContext();
}
//Context作用域销毁时调用
public void contextDestroyed (ServletContextEvent sce){
}
}
将监听器接口注册到Tomcat
<listener>
<listener-class>com.wangxiangqian.listener.OneListener</listener-class>
</listener>
//新增数据时调用
public void attributeAdded(ServletContextAttributeEvent scae){}
//删除数据时调用
public void attributeRemoved(ServletContextAttributeEvent scae){}
//更新数据时调用
public void attributeReplaced(ServletContextAttributeEvent scae){}
<listener>
<listener-class>com.wangxiangqian.listener.OneListener</listener-class>
</listener>
实现接口
public class OneFilter implements Filter{
public void doFilter(ServletRequest servletRequest ,ServletResponse servletResponse,FilterChain filterChain) throws IOException,ServletException{
//FilterChain负责将请求对象和响应对象放行
filterChain.doFilter(serletRequest,servletResponse)
}
}
注册给Tomcat服务器
<filter>
<filter-name>oneFilter</filter-name>
<filter-class>com.wangxiangqian.filter.OneFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>oneFilter</filter-name>
<url-pattern>/资源文件</url-pattern>
</filter-mapping>
拦截地址格式
调用某一个具体文件之前,拦截
<url-pattern>/img/mm.jpg</url-pattern>
调用某一个文件夹下所有文件之前,拦截
<url-pattern>/img/*</url-pattern>
调用任意文件夹下某种类型文件之前,拦截
<url-pattern>*.jpg</url-pattern>
调用网站中任意文件时,拦截
<url-pattern>/*</url-pattern>
基本格式:对html的升级,可以在嵌套使用java代码
<% java代码 %> <%=java代码的值%> <% if(age>=18){ %> <font style="color:red;font-size:45px">热烈欢迎</font> <% }else{ %> <font style="color:red;font-size:45px">谢绝入内</font> <% } %>
常用内置java对象
Servlet与JSP
Http服务器调用JSP文件步骤
基本语法
<!--取全局作用域中的数据-->
${applicationScope.key值}
<!--取会话作用域中的数据-->
${sessionScope.key值}
<!--取请求作用域中的数据-->
${requestScope.key值}
<!--取当前页作用域中的数据-->
${pageScope.key值}
无法从作用域对象读取集合内容输出
简化
${共享数据名}
支持运算表达式
<!--数学运算-->
${key1+key2}
<!--关系运算-->
${age>=18?"欢迎光临":"谢绝入内"}
<!--逻辑运算-->
其他内置对象
从通过请求对象读取当前请求包中请求参数内容,并将请求参数内容写入到响应体中
${param.请求参数名}
如果浏览器发送的请求参数是[一个请求参数关联多个值]此时可以通过paramVaues读取请求参数下指定位置的值并写入到响应体
${paramValues.请求参数名[下标]}
EL表达式常见异常
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。