web学习

来源:互联网 发布:python logging模块 编辑:程序博客网 时间:2024/06/09 05:35
1、web应用(webDemo)文件结构:
<webDemo>-------web应用名称,可以改变
|------WEB-INF
|            |  
|            |---------classes
|            |---------lib
|            |---------web.xml
|-------<a.jsp>--------存放任意多的JSP页面
//注意:上面的webDemo是web应用所对应文件夹的名字,可以更改;a.jsp是应用下JSP页面的名字,可以修改(还可增加更多的jsp页面).其他文件夹、配置文件都不可以修改。
a.jsp页面内容如下:webDemo\a.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errprPage="" %>
<html>
<head>
            <title>欢迎</title>
</head>
<body>欢迎学习Java Web知识</body>
</html>

2、生成页面出现乱码现象解决方案
    1)进入Tomcat安装目录,找到conf目录下文件server.xml。在server.xml文件中 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
        redirectPort="8443"/>中添加“ URIEncoding="UTF-8"”,变成 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
        redirectPort="8443"
        URIEncoding="UTF-8"/>
    2)在获取name的请求参数之前设置下编码方式。
         request.setCharacterEncoding("utf-8");
         response.setCharacterEncoding("utf-8");
         response.setContentType("text/html;charSet=utf-8");

3、创建Servlet的两个时机
    1)客户端第一次请求某个Servlet时,系统创建该Servlet的实例:大部分的Servlet都是这种Servlet。
    2)Web应用启动时立即创建Servlet实例,即load-on-start-up Servlet。
            配置load-on-start-up Servlet的Servlet的方式:
            在web.xml文件中通过<servlet.../>元素的<load-on-startup../>子元素进行配置。

4、创建ActionListener时添加的包文件:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

5、Filter
   ( 1)Filter作用:
    1)在HttpServletRequest到达之前,拦截客户的HttpServletRequest。
    2)根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据。
    3)在HttpServletResponse到达客户端之前,拦截HttpServletResponse。
    4)根据需要检查HttpServletResponse,也可修改HttpServletResponse头和数据
    (2)创建一个Filter需要步骤
    1)创建Filter处理类。
    2)web.xml文件中配置Filter。
        配置Filter名,配置Filter拦截URL模式(它与Servlet配置区别,Servlet只配置一个URL,而Filter可以同时拦截多个请求的URL。故在配置Filter的URL模式时通常会使用模式字符串,使得Filter可以拦截多个请求。)
    (3)Filter种类
    1)用户授权的Filter:Filter负责检查用户请求,根据请求过滤用户非法请求。
    2)日志Filter:详细记录某些特殊的用户请求。
    3)负责解码的Filter:包括对非标准编码的请求解码。
    4)能改变XML内容的XSLT Filter等
    5)Filter可负责拦截多个请求或响应:一个请求或响应也可被多个Filter拦截。

4、伪静态页面
   ( 1)实现伪静态:通过Filter拦截所有发向*.html请求,然后按某种规则将请求forward到实际的*.jsp页面。现有的URL Rewrite开源项目为这种思路提供了实现。
    (2)利用URL Rewrite实现网站伪静态   
    (3)实现步骤:
            1)创建一个web project暂时取名为:urlrewrite,在WEB-INF文件夹中修改web.xml文件。
                  web.xml文件为:
                    <?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

<!-- 配置Url Rewrite的Filter -->

<filter>

<filter-name>UrlRewriteFilter</filter-name>

<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>

</filter>

<!-- 配置Url Rewrite 的Filter拦截所有请求 -->

<filter-mapping>

<filter-name>UrlRewriteFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

</web-app>

2)在WEB-INF文件夹下增加urlrewriter.xml文件,内容为:
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" 
"http://tuckey.org/res/dtds/urlrewrite4.0.dtd"> 
<urlrewrite> 
<rule> 
<!-- 所有配置如下正则表达式的请求 --> 
<from>/userinf-(\w*).html</from>from> 
<!-- 将被forward到如下JSP页面,其中$1代表上面第一个正则表达式所匹配的字符串 --> 
<to type="forward">/userinf.jsp?username=$1</to> 
</rule> 
</urlrewrite> 

3)编写自己的jsp文件,取名为userinf.jsp,内容为:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%
//获取请求参数
String user = request.getParameter("username");
 %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title> <%=user%>的个人信息 </title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head>
  <body>
  <%
  //此处应该通过数据库读取该用户对应的信息
  //此处只是模拟,因此简单输出:
  out.println("现在时间是:" + new java.util.Date() + "<br/>");
  out.println("用户名: " + user);
   %>
  </body>
</html>

4)将jar包"urlrewritefilter-4.0.3.jar"包倒入到web工程中,即放到lib文件夹中,直接ctrl+c复制urlrewritefilter-4.0.3.jar文件,再到MyEclipse界面上,点击lib,ctrl+v即可,则在Reference d Liblaries中会显示添加的jar包。
5)部署web应用。点击部署(容易忘记)
6)开启tomcat
7)在浏览器中输入"
          http://localhost:8080/urlrewrite/userinf-sdhus.html"即应用。
          这个链接对应:"http://localhost:8080/urlrewrite/userinf.jsp?username=sdhus".
.

5、Listener监听器
(1)定义Listener实现类。
(2)在web.xml文件中配置Listener
        配置:<listener-> <listener-class>lee.GetConnListener</listener-class></listerner>
(3)常用的web事件监听器接口:
      1)ServletContextListener:用于监听Web应用的启动和关闭
      2)ServletContextAttributeListener: 用于监听ServletContext范围(application)内属性的改变
      3)ServletRequestListener:用于监听用户请求。
      4)ServletRequestAttributeListener:用于监听ServletRequest范围(request)内属性的改变。
      5)HttpSessionListener:用于监听用户Session的开始和结束。
      6)HttpSessionAttributeListener:用于监听HttpSession范围(session)内属性的改变。

6、通过检查HttpServletRequest可以精确的监控在线用户的状态。思路是:
    1)定义一个ServletRequestListener,这个监听器负责监听每个用户请求,当用户请求到达时,系统将用户请求的session ID、用户名、用户IP、正在 访问的资源、访问时间记录下来。
    2)启动一条后台线程,这条后台线程每隔一段时间检查上面的每条在线记录,如果某条在线记录的访问时间与当前时间差超过了指定值,将这条在线记录删除即可。这条后台线程应随着Web应用的启动而启动,可考虑使用ServletContextListener来完成。


7、web应用缺少jar包时,需要将缺少的jar包复制到web应用的WEB-INF\lib路径下。









0 0
原创粉丝点击