码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础——JSP

时间:2017-09-05 01:41:10      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:设计   ati   示例   his   编程   平台   名称   编程语言   xxxxxx   

一、JSP的由来

在很多动态网页中,绝大多部分内容是不变的,只有局部内容需要动态产生和改变。例如, 一个新闻的浏览次数,只有这个次数是动态改变的,而Servlet程序返回客户端的代码全是java程序动态创建的。Servlet 的缺点,处理界面困难。JSP 是在Servlet的基础上发展起来的,它弥补了Servlet在界面处理方面的缺陷。

简单来讲,JSP =html+java片段+jsp标签+javascript,它功能强大,可以和javabean 结合

另外,JSP+javabeen+servlet 就构成了mvc模式。

JSP是运行在服务端的,也就是说,我们在桌面上创建一个.JSP文件,它也不能能够被执行哦。

技术分享

我们将它黏贴到Tomcat上的webapps文件中(或者你直接在里面创建.jsp文件也可以)。

技术分享

下一步,我们要启动tomcat。接着在浏览器中访问:http://localhost:8080/myweb/Demo.jsp。

技术分享

接下来神奇的事情发生了。在Tomcat的webapps中可以看到,帮我们自动生成两个文件。

技术分享

二、JSP的简介
摘录自百度:
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。
用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
三、最简单的JSP程序
<%
     String userName="zhangsan";
%>
       
<script>
      alert(  <% userName %> ); 
</script>

注意:访问JSP的过程

如果是第一次访问服务器,则翻译成一个对应的java文件(Servlet)。然后,再被编成 .class 文件并加载到内存中。

如果是以后访问,则直接调用内存中的jsp实例,所以第一次访问慢,以后访问会更加快。

四、3种JSP注释

1.

<%
        //this is 
        /* this
        is */
%>

2.

<%--  //这样的注释内容不会被发送到客户端
  这是被注起来的内容 
<h1>这是注起来的</h1>
--%>

3.

<!-- <% out.print("老板让我干的活我就不干");  %>   -->   //这里的内容会发送到客户端,但浏览器不会显示

五、JSP脚本元素(3种)

1.

1) 代码段 <% %>
它要严格遵守java语言规范,需要导包的要导包
<% %> 和   <% %> 之间的java代码是可以互相访问的,相当于写在一个  <% %>里

2.

2) 声明 <%!xxxxxxx%>   //注意 <%! 中间千万不能空格
<%!public String test(){
return "ok:";
}%>

3.

3) 表达式 <%= xxx  %>    //注意 <%= 中间千万不能空格,后面不能有分号
<%=String str="嘻嘻嘻";%>

例子:
<label><%= str %></label>  //和下面的写法等价
<label><% out.print(str); %></label>

附:myeclipse 生成的jsp页面,解说:

(在实际应用中,不需要的我们可以删除它)

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   //解说:page指令,import用来导包的,pageEncoding指当前页面编码方式
<%
    String path = request.getContextPath();  //解说: contextPath 代表web应用的名称 /shop-admin
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
        //上下对齐解说: //http                    //localhost                        //8080            // shop-admin
        //上面最后生成的结果:-> http://localhost:8080/shop-admin/                                     
%>
        
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> //解说:言档类型声明
    <html>
        <head>
        <base href="<%=basePath%>">   //解说:<base href="http://localhost:8080/shop-admin/" >   
            
        <title>My JSP ‘test.jsp‘ starting page</title>
        <body>    
        <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">
        -->
            
        </body>
    </html>

六、JSP版本的计算器(代码示例)

<% 
    //接收参数
    String num1 =request.getParameter("num1"); 
    String num2 =request.getParameter("num2"); 
    String flag =request.getParameter("flag"); 
                    
    int  n_num1=0;
    int  n_num2=0;
    int result=0;
                   
    if(num1!=null&&num2!=null&&flag!=null){
    //计算
    n_num1=Integer.parseInt(num1);
    n_num2=Integer.parseInt(num2);
                       
    if(flag.equals("+")){
        result=n_num1+n_num2;
    }else  if(flag.equals("-")){
        result=n_num1-n_num2;
    }else  if(flag.equals("*")){
        result=n_num1*n_num2;
    }else  if(flag.equals("/")){
        result=n_num1/n_num2;
    }
                       
        out.print("<h1>计算结果是 "+result+"</h1>");
    }
        
    //输出结果        
    %>
                
    <form action="calcUI.jsp" name="form1"  method="get" >
    请输入第一个数:
    <input type="text" name="num1" value=‘<%=request.getParameter("num1")==null?"":request.getParameter("num1")  %>‘/>
    <br/>
        
    <select name="flag" >
    <option value=‘+‘ <%="+".equals(flag)?"selected ":"" %>>+</option>
    <option value=‘-‘ <%="-".equals(flag)?"selected ":"" %>>-</option>
    <option value=‘*‘ <%="*".equals(flag)?"selected ":"" %> >*</option>
    <option value=‘/‘ <%="/".equals(flag)?"selected ":"" %>>/</option>
    </select>
    <br/>
    请输入第二个数:
    <input type="text" name="num2"  value=‘<%=request.getParameter("num2")%>‘ />
                
    <input type="submit"  value="计算" />
    </form>

七、MVC模式

M  ->mode 模型层 -> javaBeen  (比如 UserDao,UserInfo)

V  ->view 视图层  -> html , jsp

C  ->controller 控制层  ->由Servlet担当

 

Java基础——JSP

标签:设计   ati   示例   his   编程   平台   名称   编程语言   xxxxxx   

原文地址:http://www.cnblogs.com/1693977889zz/p/7476502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!