servlet+jsp基础 by cju


servlet+jsp
1,验证码
      作用:防止恶意注册(利用代码重复注册导致服务器瘫痪);
      动态生成验证码servlet继承与HttpServlet,验证码通常是以图片的形式显示;
     
2,Servlet的运行机制
      IE浏览器(以post传参request、response请求)---logins---》Servlet(实例化->init()初始化
               ->service()分配调用->doPost(),doGet(),doPut(),doDelete());
      注意:init()初始化的对象会多次调用,不会马上销毁,过段时间会自动销毁,销毁时调用destroy()方法;
      Servlet(c):继承GenericServlet(c)继承Servlet(i);
    
3,转发器
     RequestDispatcher  dispatcher  =  request.getRequestDispatcher();
     dispater.forward(request,response);
     利用request.setAttribute("","")和request.getAttribute()存取;
     注:Struts本身就是一个转发器RequestDispatcher;
    
4,过滤器
     继承于接口javax.servlet.Filter
    
     主要用到 public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2)方法
     注意:ServletRequest,ServletResponse和HttpServletRequest,HttpServletResponse的转换
           和arg2.doFilter(arg0, arg1);
     另外要配置web.xml
     配制方法
     首先注册:
     <filter>
     <description>
     <filter-name>CheckFilter</filter-name>
     <filter-class>com.zx.pethospital.servlet.CheckFilter</filter-class>
     </filter>
     需要过滤的(main.jsp)
     <filter-mapping>
     <filter-name>CheckFilter</filter-name>
     <url-pattern>/main.jsp</url-pattern>
     </filter-mapping>
    
5,监听器
     1,对Session的监听:  继承类HttpSessionsListener
         Session不是在访问Tomcat时马上创建的而是在访问Jsp时才会被创建的
         SessionsAttribute监听Session的放和取
     2,对application的监听: 继承类ServletContextListener
         对Context的放和取进行监听
        
6,仓库application的应用
    主要用于在线游戏中的在线人数和那些公共的属性
    例子:
    ServletContext(类的原型)  application = this.getServletContext();在Servlet中
   // ServletContext application = this.getServlet().getServletContext();在struts中
    Map  loginedUsers  =  (Map)application.getAttribute("loginedUsers");
    loginedUsers.put(session.getId(), u);
   application.setAttribute("loginedUsers", loginedUsers);

7,在web.xml中设置Sessions会话的参数
     例子:设置会话为两分钟
           <session-config>
               <session-timeout>2</session-timeout>
           </session-config>
  
8,配置文件   
      配置.properties(键值对)的文件
      (1)  Properties  p  =  new  Properties();//Properties是map的子类
           FileInputStream fis  =  new  FileInputStream("路径");//绝对路径
           p.load(fis);//读文件中的键值对
           p.getProperty("键");
          
      (2)     //简单些
           InputStream is = this.getClass.getResourceAsStream("文件名");
           PropertyResourceBundle   p  =   new PropertyResourceBundle(file);
           String   driver  = p.getString("driver");//获取值
          
9,用web.xml配置
       (1)初始参数
            <servlet>
               <init-param>
                  <param-name>zfk</param-name>
                  <param-value>GBK</param-value>
               </init-param>
             </servlet>
        在Servlet中获取zfk的值
             String  zfk  =  this.getinitparameter("zfk");
             request.setCharcterEncoding(zfk);
        (2)全局参数
            <context-param>
                 <param-name>zif</param-name>
                 <param-value>GBK</param-value>
             </context-param>
             获取
             ServletContext  application  =  this.getServletContext();
             String zif = application.getinitparameter("zif");
            
10,扩展标签
     扩展html标签,但属于Jsp(S端)技术
     官方标签:
             内置:jap:useBean,jsp:setProperty,jsp:getPropety,jsp:forword(转发器),jsp:param,jsp:include
                ( request.getRequestDispatcher("index.jsp").forward(request,response);
                 等同与
                  <jsp:forward page="index.jsp"> )
           定义:jstl需要插件.jar包
           <%@ taglib Uri="http://java.sun.com/jsp/jstl/core" prefix="c">      
          
           第三方标签:要继承SimpleTagSupport
           例子:我自定义的分页标签
      import java.io.IOException;
      import javax.servlet.jsp.JspException;
      import javax.servlet.jsp.JspWriter;
      import javax.servlet.jsp.tagext.SimpleTagSupport;

      public class Fenye extends SimpleTagSupport {
       private int pageNum;
       private int pageEnd;
       private String yeMian;

       public String getYeMian() {
        return yeMian;
       }

       public void setYeMian(String yeMian) {
        this.yeMian = yeMian;
       }   

       public int getPageNum() {
        return pageNum;
       }

       public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
       }

       public int getPageEnd() {
        return pageEnd;
       }

       public void setPageEnd(int pageEnd) {
        this.pageEnd = pageEnd;
       }

       public void doTag() throws JspException, IOException {

        JspWriter out = this.getJspContext().getOut();
        // 首页
        out.println("<td height=" + 34 + ">");
        out.println("<font size=" + 4 + "><b>");
        out.println("<a href=" + yeMian + "?pageNum=" + 1 + ">");
        out.println("首页</a></b></font>");
        out.println(" &nbsp; &nbsp;  &nbsp; &nbsp; ");
        // 上页
        out.println("<td height=" + 34 + ">");
        out.println("<font size=" + 4 + "><b>");
        if (pageNum != 1) {
         out
           .println("<a href=" + yeMian + "?pageNum=" + (pageNum - 1)
             + ">");
        }
        out.println("上一页");
        if (pageNum != 1) {
         out.println("</a>");
        }
        out.println("</b></font>");
        out.println(" &nbsp; &nbsp;  &nbsp; &nbsp; ");
        // 下页
        out.println("<td height=" + 34 + ">");
        out.println("<font size=" + 4 + "><b>");
        if (pageNum != pageEnd) {
         out
           .println("<a href=" + yeMian + "?pageNum=" + (pageNum + 1)
             + ">");
        }
        out.println("下一页");
        if (pageNum != pageEnd) {
         out.println("</a>");
        }
        out.println("</b></font>");
        out.println(" &nbsp; &nbsp;  &nbsp; &nbsp; ");
        // 最后页
        out.println("<td height=" + 34 + ">");
        out.println("<font size=" + 4 + "><b>");
        out.println("<a href=" + yeMian + "?pageNum=" + pageEnd + ">");
        out.println("最后一页</a></b></font>");
        out.println(" &nbsp; &nbsp;  &nbsp; &nbsp; ");
        super.doTag();
       }

      }
      自定义标签要注册在nytag.tld中注册
      <?xml version="1.0" encoding="UTF-8"?>

           <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
          <taglib>
           <tlibversion>1.2</tlibversion>
      <jspversion>1.1</jspversion>
       <shortname>my</shortname>

      <tag>
        <name>fenye</name>
        <tagclass>com.zx.pethospital.view.util.Fenye</tagclass>
        <bodycontent>empty</bodycontent>

        <attribute>
         <name>pageNum</name>
         <required>false</required>
         <rtexprvalue>true</rtexprvalue>
        </attribute>
  
         <attribute>
         <name>pageEnd</name>
         <required>false</required>
         <rtexprvalue>true</rtexprvalue>
         </attribute>
  
        <attribute>
         <name>yeMian</name>
         <required>false</required>
         <rtexprvalue>true</rtexprvalue>
        </attribute>
      </tag>
 
     </taglib>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值