Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2509503
  • 博文数量: 319
  • 博客积分: 9650
  • 博客等级: 中将
  • 技术积分: 3881
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 21:05
文章分类

全部博文(319)

文章存档

2017年(5)

2016年(10)

2015年(3)

2014年(3)

2013年(10)

2012年(26)

2011年(67)

2010年(186)

2009年(9)

分类: Java

2010-04-04 22:08:11

1.最简单的JSP
HelloWorld.jsp

   
        Hello
       
            <%
                out.println("Hello World!");
            %>
       
   
---------------------------------------------------------------------------------------------------------------------------------------
2.JSP中的全局变量和局部变量
AccessCounts.jsp

   
        JSP Declaration
   
   
        <%!
            // 全局变量
            int accessCount = 0;
        %>
       
        <%
            // 局部变量
            int accessCount2 = 0;
        %>
       
       

AccessCount:
           
Overall Variable:<%= ++accessCount %>
           
Local Variable:<%= ++accessCount2 %>
       


       
   
测试结果:访问同一页面,每刷新一次,accessCount增1,accessCount2不变(每次出现一个新的局部变量)。
----------------------------------------------------------------------------------------------------------------------------------
3.注释、当前页面从URL中取背景色参数
BGColor.jsp

   
        Color Testing
   
   
   
   
    <%--
    JSP注释
    客户端看不见
    --%>
   
   
    <%
    //注释2
    /*
    注释3
    */
    // 将请求中参数bgColor的值拿过来,假如没有传这个参数,则值为null
    String bgColor = request.getParameter("bgColor");
    boolean hasColor;
    if(bgColor != null) {
        hasColor = true;
    } else {
        hasColor = false;
        bgColor = "white";
    }
    %>
       
       
   
   

Color Testing


   
    <%
    if(hasColor) {
        out.println("You supplied a backgroud color of " + bgColor + ".");
    } else {
        out.println("Use Default backgroud color of white");
    }
    %>
       
   

-----------------------------------------------------------------------------------------------------------------------------

4.表达式
Expressions.jsp

   
        JSP Expressions
   
   
   
       

JSP Expressions


       
   

           
           
  • Current Time:<%= new java.util.Date().toLocaleString() %>
           
  • Your HostName:<%= request.getRemoteHost() %>
           
           
  • Your Session Id:<%= session.getId() %>
           
  • The testParam from parameter:<%= request.getParameter("testParam") %>
       

   
   
----------------------------------------------------------------------------------------------------------------------------------------
指示语句的测试
TestDirective.jsp
< import="java.util.*" %>
< contentType="text/html;charset=gb2312" %>
    <指示语句的测试-->
   
<%= new Date().toLocaleString() %>



<%
    out.println("你好!");
%>

--------------------------------------------------------------------------------------------------------------------------------
6.错误页跳转测试
①TestErr.jsp
< errorPage="ErrPage.jsp" %>

<%
String str = "123abc";
int i = Integer.parseInt(str);
out.println("str= " + str + ",i= " + i);
%>
②ErrPage.jsp
< contentType="text/html;charset=gb2312" %>
< isErrorPage="true" %>


   
        错误信息:<%= exception.getMessage()%>
   

-----------------------------------------------------------------------------------------------------------------------------
7.include指令”%@ include file“和include动作指令“jsp:include page”
前者是先包含进来再编译执行;后者是先各自编译执行再包含进来
①include.jsp

   
        include test
   
   
   
       
            The current time and date are:

       
            < file="date.jsp" %>

       
           
       

   
②date.jsp
< import="java.util.*" %>
<%--a string representation of this date, using the locale conventions.--%>
<%= (new Date()).toLocaleString() %>
说明:以下转载自网络   http://blog.matrix.org.cn/rudy541/entry/200708162
jsp中两种包含文件的区别:
相同点:两者逗能包含一个页面
不同点:
区别1:
(先执行,后包含)
此标签表示法:能动态区别加进来的是动态页面还是静态页面
对于静态页面则直接将资源包含(仅取其文本)。
对于动态页面则先处理各自资源,之后将处理过的结果包含在一起。
<%@ include file="b.jsp">
此指令表示:静态地包含页面,不管其内容如何,不过是静态页面还是动态页面都首先将页面的内容先加进来。
然后一起处理,再将所有内容发给客户端。
实例挑战:
有b.jsp页面
<%int i = 10 ;%>
<%=i%>
主界面a.jsp也有<%int i = 100 ;%>        <%=i%>
如果是加载<%@ include file="b.jsp">,则是先包含后执行,就会发现报错,i被重新定义,
但如果是加载则是先执行结果,然后将结果包括到主页面。不会报错。
区别2:
可以分开写成:



这样就可以传递参数。

----------------------------------------------------------------------------------------------------------------------
8.两个数的乘除运算
①Compute.html

   
        Compute
       
   
   
   
       

           

               

选择要做的运算:
                   
                    除法
                   
                    乘法
               


               

被除数(被乘数)
                   
                    除数(乘数)
                   
               


               


                   
               


           

       

   
②Compute.jsp
< language="java" %>
< contentType="text/html;charset=gb2312" %>
<%
    // 将Compute.html页面输入的要进行计算的两个变量拿过来
    String value1 = request.getParameter("value1");
    String value2 = request.getParameter("value2");
%>
<% if("division".equals(request.getParameter("compute"))) { %>
   
       
           
           
       

<%    } else { %>
       
        < file="multiply.jsp" %>
<%    } %>

③multiply.jsp
< contentType="text/html;charset=gb2312" %>

   
        Multiply
   
    <%--进行乘法计算的JSP--%>
   
       

           


                <%
                    try{
                        float multiplicand = Float.parseFloat(request.getParameter("value1"));
                        float multiplicator = Float.parseFloat(request.getParameter("value2"));
                        double result = multiplicand*multiplicator;
                        out.println(multiplicand + "*" + multiplicator +" = " + result);
                    } catch(Exception e) {
                        out.println("不合法的乘数或被乘数");
                    }
                %>
           


       

   
④divide.jsp
< contentType="text/html;charset=gb2312" %>

   
        Divide
   
    <%--进行除法计算的JSP--%>
   
       

           


                <%
                    try{
                        float divident = Float.parseFloat(request.getParameter("v1"));
                        float divisor = Float.parseFloat(request.getParameter("v2"));
                        double result = divident/divisor;
                        %>
                        <%= result%>
                        <%
                    } catch(Exception e) {
                        out.println("不合法的除数或被除数");
                    }
                %>
           


       

   
----------------------------------------------------------------------------------------------------------------------------------
9.jsp:forward和response.sendRedirect
①最简单的jsp:forward
forward.jsp

   
        Forward Example
   
   
   
        Welcome to forward.jsp
        <%--直接跳转到forforward.jsp,这两个jsp用的是同一个request--%>
       
   
forforward.jsp

   
        forforward.jsp
   
   
   
        Welcome

        Here is forforward.jsp
   
②jsp:forward和response.sendRedirect的比较
forward1.jsp

   
        Forward Example
   
   
   
        Welcome to forward1.jsp
       
           
           
           
       

   
forforward1.jsp:和forward1.jsp使用的是同一个request(服务器跳转)

   
        forforward1.jsp
   
   
   
        Welcome

        Here is forforward1.jsp

        <%= request.getParameter("name")%>
        <%= request.getParameter("oldName")%>
        <%= request.getParameter("roles")%>
        <%= request.getParameter("address")%>
   
测试结果:
访问
结果:
Welcome
Here is forforward1.jsp
m yyg manager 34527144231
此时页面URL还是forward1.jsp,并没有跳转到forforward1.jsp,给用户的感觉还是刚才的页面在为自己服务。
说明:m 和manager 是forward1.jsp中传过来的;而yyg 和34527144231 是在URL中通过request传过来的。并且forward1.jsp中也没有address属性,这也从另一个角度说明了这两个jsp使用的是同一个request。

test.jsp:和forward1.jsp使用的是不同的request
说明:访问过后,页面跳转成
这个过程中客户和服务器之间产生了两个request,并且test.jsp后跟参数并不能传递到forforward1.jsp(原因也很明显:两次是不同的request)
<%
    response.sendRedirect("forforward1.jsp");
%>

---------------------------------------------------------------------------------------------------------------------------------------------
10.jsp:useBean
①CounterBean.java
package bean;
import java.io.Serializable;
/**
 * 一个很普通的JavaBean
 * @author jukey
 *
 */
public class CounterBean implements Serializable {
   
    private int count = 0;
    public CounterBean() {}
    public int getCount() {
        count++;
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
}
②test.jsp:JSP往JavaBean中设置值,从JavaBean中拿值
< import="bean.*" %>
<%--
<%
    // 下面这个语句等同于
    CounterBean cb = new CounterBean();
%>
--%>


    <%--将bean中存储的值拿出来--%>
    <%= cb.getCount()%>


    <%--cb.setCount(25)--%>
   


    <%--cb.getCount()--%>

以下是Bean的4种作用范围的测试:
③page有效(仅涵盖使用JavaBean的页面)
PageBean.jsp

   

   
       

CounterBean scope="page" Example


        count: <%= counterBean.getCount()%>
    <%--上下两句效果一样--%>
       
   
④request有效(有效范围仅限于使用JavaBean的请求)
RequestBean.jsp


   
<%--
    bean.CounterBean counterBean = request.getAttribute("counterBean");
    if(counterBean == null) {
        counterBean = new bean.CounterBean();
        request.setAttribute("counterBean",counterBean);
    }
--%>
   

   
       

CounterBean scope="request" Example


   
        <% counterBean.setCount(100); %>
        <%--和RequestBean2.jsp用的是同一个request,也是同一个counterBean对象--%>
           
       
           
            <%--和RequestBean2.jsp用的不是同一个request,也不是同一个counterBean对象--%>
               
               
        <%-- response.sendRedirect("RequestBean2.jsp"); --%>
   

RequestBean2.jsp


   

   
       

CounterBean scope="request" Example


        count: <%= counterBean.getCount()%>
   

⑤Session有效(有效范围在用户整个连接过程中,整个会话阶段均有效)
SessionBean.jsp


   
<%--
    // 这一段java代码等同于上面这句JSP语句
    bean.CounterBean counterBean = session.getAttribute("counterBean");
    if(counterBean == null) {
        counterBean = new bean.CounterBean();
        session.setAttribute("counterBean",counterBean);
    }
--%>

   
       

CounterBean scope="session" Example


        count: <%= counterBean.getCount()%>
   

SessionBean2.jsp


   

   
       

CounterBean scope="session" Example


        count: <%= counterBean.getCount()%>
   
 
⑥application有效(有效范围涵盖整个应用程序,也就是对整个网站都有效)
可用于作为首页访问量的计数器
ApplicationBean.jsp


   

   
       

CounterBean scope="application" Example


        count: <%= counterBean.getCount()%>
   

ApplicationBean2.jsp


   

   
       

CounterBean scope="application" Example


        count: <%= counterBean.getCount()%>
   
----------------------------------------------------------------------------------------------------------------------
11.jsp:setProperty和jsp:getProperty
①SaleEntry.jsp

   
        Using jsp:setProperty
   
   
   
       
           

                Using jsp:setProperty
       

       
       
       
        <%--从JSP向JavaBean中设值--%>   

        " />
       
       
                   
       

       
       
           
               
                <%--Jsp从JavaBean中取值--%>
               
Item IDUnit PriceNumber OrderedTotal Price
           

               
$
               

               
$
       

   
②SaleEntry.java
package bean;
public class SaleEntry {
   
    private String itemID = "unknown";
    // 折扣
    private double discountCode = 1.0;
    private int numItems = 0;
   
    public double getDiscountCode() {
        return discountCode;
    }
   
    public void setDiscountCode(double discountCode) {
        this.discountCode = discountCode;
    }
   
    public String getItemID() {
        return itemID;
    }
   
    public void setItemID(String itemID) {
        this.itemID = itemID;
    }
   
    public int getNumItems() {
        return numItems;
    }
   
    public void setNumItems(int numItems) {
        this.numItems = numItems;
    }
   
    // 获取单价
    public double getItemCost() {
        double cost;
        if("a1234".equals(itemID)) {
            cost = 12.99 * getDiscountCode();
        } else {
            cost = -99;
        }
        return roundToPennies(cost);
    }
   
    // 计算到分位
    public double roundToPennies(double cost) {
        return (Math.floor(cost * 100) / 100.0);
    }
   
    // 计算总价格
    public double getTotalCost() {
        return (getItemCost() * getNumItems());
    }
   
}

-------------------------------------------------------------------------------------------------------------------------------------
12.HTML页面输入内容,提交给JSP文件,JSP将这些内容存入JavaBean,再从JavaBean中拿出来显示。
中间有个中文乱码的处理问题。
①SayHelloBean.html

   
        数据输入
       
   
   
   
       

           

请输入数据


               

                   

姓名
                       
                        性别
                       
                   


                   


                       
                   


               

               

 


               

 


       

   

②SayHelloBean.jsp
< language="java" import="bean.HelloBean;" %>
< contentType="text/html;charset=gb2312" %>
<%--先将传过来的request中的字符编码格式设置成gbk,再取内容--%>
<% request.setCharacterEncoding("gbk"); %>

    <%--通过*来设置所有属性和输入参数之间的关联,struts中大量运用--%>
       

   

   
        HelloBean
       
   
   
   
       

 


       


            欢迎
               
                   
                        <%--转码(终结解决方案):将hello对象中name属性的值用ISO8859_1编码格式以字节数组拿出,再转化成gbk格式---%>
                        <%--= new String(hello.getName().getBytes("ISO8859_1"),"gbk")--%>
                   

               

                <%--转码(终结解决方案):将hello对象中sex属性的值用ISO8859_1编码格式以字节数组拿出,再转化成gbk格式---%>
                <%--= new String(hello.getSex().getBytes("ISO8859_1"),"gbk")--%>
           

       


       
       
   

③HelloBean.java
package bean;
public class HelloBean {
    private String name = "";
    private String sex = "";
   
    public HelloBean() {}
   
    public String getName() {
        return name;
    }
   
    public void setName(String name) {
        this.name = name;
    }
   
    public String getSex() {
        return sex;
    }
   
    public void setSex(String sex) {
        this.sex = sex;
    }
   
}

 
阅读(2659) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~