javaweb小结

2015/02/01 14:04
阅读数 70

一、tomcat
1. 配置文件
server.xml : 配置tomcat的参数,服务器启动时加载修改了一定要重启服务器
web.xml :每个web应用的web.xml文件都会继承该文件下所有的配置

二、servlet
1. 一个java类实现了Servlet接口,我们就称之为Servlet
2. 默认的实现类
GenericServlet: 提供了getServletConfig和getServletContext方法
HttpServlet:覆写了service方法,将ServletRequest和ServletResponse强转为子类HttpServletRequest和HttpServletResponse判断请求方式,从而决定去调用doGet和doPost
所以,子类只需要覆写doGet 和 doPost 即可
3. Servlet的映射
Servlet需要在web.xml文件中做映射,web容器才能对Servlet进行初始化
<servlet> 为 servlet 起别名
<servlet-mapping>为 servlet映射访问路径以'/'开头,代表web应用
4. ServletConfig
读取servlet初始化信息
5.ServletContext
代表当前web应用,也被称为 servlet上下文
它是域对象,可以让多个servlet共享数据
读取web应用下的所有文件
getRealPath 获得绝对路径
getResourceAsStream获得输入流
6. 类加载读文件
Demo.class.getClassLoader().getResource().getPath();获得绝对路径
Demo.class.getClassLoader().getResourceAsStream()获得流
三、request和response
1. request
获得ie发送的数据
常用方法
getMethod 获得请求方式
getRequestUri 获得请求资源名
getHeader 获得请求消息头
getParameter 获得请求参数
getParameterNames获得所有参数名 结合BeanUtils 使用
getRemoteAdress()获得来访者ip

请求转发
request.getRequestDispatcher("/index.jsp").forward(request,response);
mvc 设计模式
servlet处理用户的请求,将结果转发给jsp 数据封装在javabean

获得请求参数中文乱码问题
get
String result =new String(data.getBytes("iso-8859-1"), "utf-8");
post
request.setCharacterEncoding("utf-8");

-------

mvc模式下:

response.sendRedirect 重定向 让其他servlet来处理,servlet让浏览器找其它servlet来处理
request.getRequestDispatcher请求转发 使用jsp来显示, servlet自己找其它jsp来显示

-------

 

2. response
向ie发送数据
response.getWriter()获得字符流
response.getOutputStream()获得字节流
两者不可同时调用

乱码问题
response.setContentType("text/html;charset=utf-8");

文件下载
文件名中文乱码问题
原因在于文件名是跟着http头发送的需要进行url编码
讲解了url编码

请求重定向
response.sendRedirect("/day08/.....")
response.sendRedirect(request.getContextPath()+ "/.....");

四、 会话技术cookie 和 session
1. cookie
存在客户端浏览器
name=value 的形式
cookie需要设置有效时间才会缓存,否则只在浏览器进程有效
cookie.setMaxAge()如果设置为0,则命令浏览器立即删除cookie

设置有效路径
cookie.setPath();
默认在当前路径有效
举例:/day07/servlet/CookieServlet -- 只在访问 /day07/servlet 开头的路径时才发送cookie

cookie.setDomain();设置有效主机

案例: 显示曾经浏览过的商品

2. session
HttpSession
存在服务器端的
底层是依赖cookie实现的
浏览器来访问服务器,web服务器创建一个session对象,并将sessionid以cookie的
形式发送给浏览器,浏览器再次访问服务器时会带着cookie来,服务器根据cookie
中保存的sessionid获得session对象为用户服务

session 默认失效时间为30分钟
在 web.xml 文件中可以设置
<session-config>
<session-timeout>11</session-timeout>
</session-config>

案例:
购物案例(实现多浏览器共享session)
url重写(解决浏览器禁用cookie的问题)
防表单重复提交
用户登陆

五、 jsp
1. jsp 工作原理
ie访问一个jsp,jsp引擎将jsp翻译成servlet ,剩下的事和servlet的访问过程一样
2. jsp语法
jsp指令 page指令 : import导包 session指定是否用session pageEncoding解决编码
jsp写java代码
jsp脚本表达式 jsp脚本片段 jsp声明
3. 九个隐式对象
configServletConfig
applicationServletContext
responseHttpServletResponse
requestHttpServletRequest
session HttpSession
out JspWriter
page this
exceptionThrowable (需要配置isErrorPage)
pageContextPageContext

 

pageContext主要功能,用于获得其他8大隐式对象

pageContext 也是一个域对象,但只是在当前jsp页面有效

4. web开发的四个域对象
page requestsession application
什么时候用
page: 用map不如用page
request: 请求转发
session: 请求重定向
application : 全局数据
六、 javabean
javabean 特定写法的java类,必须有无参构造方法、属性私有、共有的setter和getter

七、 el表达式
数据访问语言 用于取数据
从四个域取对象
取javabean的属性
取容器的元素 arrlist map

11个隐式对象
pageContext、param、paramValues、header、headerValues
pageScope、requestScope、sessionScope、applicationScope
cookie、initParam

  pageContext:该对象实例对应于当前页面的处理。

  pageScope:与页面作用域属性的名称和值相关联的Map类。

  requestScope:与请求作用域属性的名称和值相关联的Map类。

  sessionScope:与会话作用域属性的名称和值相关联的Map类。

  applicationScope:与应用程序作用域属性的名称和值相关联的Map类。

 param:按名称存储请求参数的主要指的Map类。

 paramValues:将请求参数的所有值作为String数组存储的Map类。

 header:按名称存储请求头的主要指的Map类。

  headerValue:将请求头的所有值作为String数组存储的Map类。

 cookie:按名称存储请求附带的Cookie的Map类。

  initParam:按名称存储Web应用程序上下文初始化参数的Map类



el自定义函数
1) 写一个java类,定义一个静态方法
2) 在 WEB-INF目录下写 tld文件
3) 在jsp页面引入tld标签库 直接使用

八、 jstl标签
导入两个jar包 Jstl.jar Standard.jar

在jsp页面要声明引入标签库
<%@ taglibprefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

1、forEach 迭代标签

用于循环遍历


<c:forEach var="good" items="${goodlist}">
</c:forEach>
2、if 条件判断

<c:if>标签 用于判断

3、<c:choose>、<c:when>和<c:otherwise>标签

if标签没有else的功能。如果需要类似与Java中if...else...的流程,需要使用choose标签。choose标签连同when,otherwise标签一块实现if...else...功能。

<c:choose>

                   <c:whentest="${ status == 'login' }">

                            when标签的输出

                   </c:when>

                   <c:otherwise>

                            otherwise标签的输出

                   </c:otherwise>

         </c:choose>

当<c:when>标签中获得的参数值时login时,显示了<c:when>标签中的内容。如果获得的参数值不满足<c:when>标签中的条件,则进入<c:otherwise>标签。这里的<c:when>和<c:otherwise>相当于Java中的if...else...语句。
后面不有很多标签,又后总结



 

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部