zoukankan      html  css  js  c++  java
  • JSP编程-步步为营

    【第一个JSP举例】

    header.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    <% out.println("welcome调用这个JSP页面"); %>
    

      footer.jsp

    <br>
    
    </body>
    </html>
    

      jsp代码

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    
    <%@ include file="/header.jsp" %><%--包含页头 --%>
    
    <%!
    int i=0;
    private int count(){
    	i++;
    	return i;
    }
    %>
    <p>调用count输出<%=count() %></p>
    <p>调用count输出<%=count() %></p>
    <br>
    <%@ include file="/footer.jsp" %><%--包含页底 --%>
    

      

    【概念总结】

    language定义使用的脚本语言
    contentType定义jsp字符编码和页面响应的MIME类型
    pageEncoding jsp页面的字符编码


    scriptlet标签

    <%! %>可定义全局变量、全局方法、全局类
    <% %>可定义局部变量
    <%= %>输出


    JSP注释
    <!-- -->HTML客户端可见
    <%-- --%>客户端不可见
    //单行注释
    /* 多行注释 */


    静态包含
    <%@ include file="header.html" %>
    <%@ include file="footer.jsp" %>
    动态包含
    <jsp:include page="header.html" />
    <jsp:include page="footer.jsp" />

    【jsp九大内置对象】
    pageContext request response session application config
    out page exception

    【四大作用域】
    Page范围 只在一个页面中保存数据 抽象类
    Request范围 只在一个请求中保存数据 接口
    Session范围 在一个会话范围中保存数据,仅供单个用户使用
    接口
    Application范围 在整个服务器上保存数据,所有用户共享

    【Page范围】

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    <%
    pageContext.setAttribute("name","名字");
    pageContext.setAttribute("age",24);
    %>
    
    <%
    String str1=(String)pageContext.getAttribute("name");
    int n=(Integer)pageContext.getAttribute("age");
    %>
    <p>姓名:<%=str1 %></p>
    <p>年龄:<%=n %></p>
    </body>
    </html>
    

      【Request范围】

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    <%
    request.setAttribute("name","马云");
    request.setAttribute("age",23);
    request.setAttribute("sex","男");
    %>
    <jsp:forward page="f_target.jsp"></jsp:forward>
    
    </body>
    </html>
    

      

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    <%
    String str=(String)request.getAttribute("name");
    int age=(Integer)request.getAttribute("age");
    String sex=(String)request.getAttribute("sex");
    %>
    
    <p>姓名:<%=str %></p>
    <p>年龄:<%=age %></p>
    <p>性别: <%=sex %></p>
    
    </body>
    </html>
    

      【Session范围】

    session保存在服务器中,只要页面不关闭,就可以随时取得

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Session</title>
    </head>
    <body>
    <h3>设置Session</h3>
    <% 
    session.setAttribute("bookName","JAVA编程"); 
    session.setAttribute("price",25.5);
    %>
    </body>
    </html>
    

      

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>get Session</title>
    </head>
    <body>
    
    <%
    String bookName=(String)session.getAttribute("bookName");
    double price=(Double)session.getAttribute("price");
    %>
    
    <p>图书名称:<%=bookName %></p>
    <p>图书价格:<%=price %></p>
    
    </body>
    </html>
    

      【Application范围】范围更大,浏览器关闭或者换用其他浏览器,也可以访问数据

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Application</title>
    </head>
    <body>
    
    <%
    application.setAttribute("bookName","数据库");
    application.setAttribute("price",45.85);
    %>
    
    </body>
    </html>
    

      

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Application</title>
    </head>
    <body>
    
    <%
    String bookName=(String)application.getAttribute("bookName");
    double price=(Double)application.getAttribute("price");
    %>
    <p>图书名称:<%=bookName %></p>
    <p>图书价格:<%=price %></p>
    </body>
    </html>
    

      知识点:

    【获取Request的头信息】jsp引入 枚举

    输出 name value

    <%@ page import="java.util.*" %>
    
    <%
    Enumeration e=request.getHeaderNames();
    while(e.hasMoreElements()){
    String name=(String)e.nextElement();
    String value=request.getHeader(name);
    %>
    <p><%=name %>    <%=value %></p>
    <%
    }
    %>
    

      

    【Response】示例:每隔一秒刷新时间

    <%
    response.setIntHeader("Refresh",1);
    Date date=new Date();
    %>
    <h3>时间</h3>
    <%=date.toLocaleString() %>
    

      网页重定向

    <h3>网页重定向-客户端跳转</h3>
    <%--response.sendRedirect("page4.jsp");--%>
    

      

    <h3>用户登录post</h3>
    <form action="login.jsp" method="post">
    用户:<input type="text" name="userName" /><br><br>
    密码:<input type="password" name="password" /><br><br>
    记住我<input type="checkbox" name="remember" value="remember" /><br><br>
    <input type="submit" value="提交" />
    <input type="reset" value="重置" />
    </form>
    

      login.jsp的代码

    <%
    String name=request.getParameter("userName");
    String pass=request.getParameter("password");
    String rem=request.getParameter("remember");
    %>
    <%=name %>
    <%=pass %>
    <%=rem %>
    

      

    post get比较
    post放在数据包里-get放在Url后面
    get数据量小、不安全

     【Cookie示例】用户登录记住用户名和密码

    <%@ page language="java" contentType="text/html; 
    
    charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ page import="java.util.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 
    
    Transitional//EN" 
    
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <script>
    function resetValue(){
    	document.getElementById("userName").value="";
    	document.getElementById("password").value="";
    }
    </script>
    <meta http-equiv="Content-Type" content="text/html; 
    
    charset=utf-8">
    <title>Test response</title>
    </head>
    <body>
    <%
    String userName=null;
    String password=null;
    Cookie[] cos=request.getCookies();
    Cookie c=null;
    for(int i=0;i<cos.length;i++){
        c=cos[i];
        if(c.getName().equals("nameAndPass")){
            //out.println("保存的用户名和密码"+c.getValue
    
    ());
            userName=c.getValue().split("-")[0];
            password=c.getValue().split("-")[1];
        }
    }
    if(userName==null){userName="";}
    if(password==null){password="";}
    %>
    <h3>用户登录post</h3>
    <form action="login.jsp" method="post">
    用户:<input type="text" name="userName" id="userName" 
    
    value="<%=userName %>"/><br><br>
    密码:<input type="password" name="password" 
    
    id="password" value="<%=password %>"/><br><br>
    记住我<input type="checkbox" name="remember" 
    
    value="remember" /><br><br>
    <input type="submit" value="提交" />
    <input type="button" value="重置" onclick="resetValue()" 
    
    />
    </form>
    
    </body>
    </html>
    

      

    <%@ page language="java" contentType="text/html; 
    
    charset=utf-8" 
    	pageEncoding="utf-8"%>
        <%@ page import="javax.servlet.http.*" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 
    
    Transitional//EN" 
    
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; 
    
    charset=utf-8">
    <title>login.jsp</title>
    </head>
    <body>
    
    <%
    String name=request.getParameter("userName");
    String pass=request.getParameter("password");
    String rem=request.getParameter("remember");
    if("remember".equals(rem)){
    	Cookie c=new Cookie("nameAndPass",name
    
    +"-"+pass);
    	c.setMaxAge(24*60*60*7);//记录一个星期
    	response.addCookie(c);//保存Cookie
    }
    response.sendRedirect("page5_response.jsp");
    %>
    
    
    </body>
    </html>
    

      【out对象】

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Test out</title>
    </head>
    <body>
    <%
    int total=out.getBufferSize();//总缓存大小
    int noUse=out.getRemaining();//未使用缓存大小
    int u=total-noUse;
    %>
    <p>总缓存大小:<%=total %></p>
    <p>未使用缓存大小:<%=noUse %></p>
    <p>已使用缓存大小:<%=u %></p>
    </body>
    </html>
    

      【config对象】

    config.getInitParameter();//获得xml里的初始化参数param

      【exception异常处理】

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
        <%@ page errorPage="ex2.jsp" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Exception</title>
    </head>
    <body>
    <%
    int a=1;
    int b=0;
    out.println(a/b);
    %>
    </body>
    </html>
    

      

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
        <%@ page isErrorPage="true" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>isErrorPage</title>
    </head>
    <body>
    
    <%
    if(exception!=null){
    	String str=exception.getMessage();
    	out.println("错误提示信息:<br>");
    	out.println(str);
    }
    %>
    
    </body>
    </html>
    

      此处需要在浏览器中运行,不在tomcat里运行

    【pageContext对象】页面上下文

    <%
    pageContext.setAttribute("name0","pageInfo");
    request.setAttribute("name1","requestInfo");
    session.setAttribute("name2","sessionInfo");
    application.setAttribute("name3","applicationInfo");
    
    out.println("->"+pageContext.getAttribute("name0")+"<br>");
    out.println("->"+pageContext.getRequest().getAttribute("name1")+"<br>");
    out.println("->"+pageContext.getSession().getAttribute("name2")+"<br>");
    out.println("->"+session.getServletContext().getAttribute("name3")+"<br>");
    %>
    

      

  • 相关阅读:
    WebService-CXF 学习笔记
    Java中对于ClassLoader类加载器 嵌套了深度技术的价值
    WebService学习笔记
    MongoDB学习笔记
    java.io.IOException: java.io.FileNotFoundException: /tmp/tomcat.2457258178644046891.8080/work/Tomcat/localhost/innovate-admin/C:/up/154884318438733213952/sys-error.log (没有那个文件或目录)
    Node Sass does not yet support your current environment: Linux 64-bit with Unsupported runtime
    Mysql优化
    SI架构设计与实践
    高并发高可用处理大数据量
    虚拟机安装CentOS详细操作
  • 原文地址:https://www.cnblogs.com/void-m/p/6146366.html
Copyright © 2011-2022 走看看