美文网首页
serlvet与JSP的简单实例

serlvet与JSP的简单实例

作者: guanalex | 来源:发表于2017-11-05 16:56 被阅读22次
    什么是JSP

    jsp全称是Java Server Pages,它和Servlet技术一样都是sun公司定义的一种用于开发动态web资源的技术。主要是和serlvet一起做web端的,也就是做动态页面用的。事实上jsp是一个特殊的Servlet实例,它跟其他Servlet一样被Servlet容器执行,在这之前它需要先被jsp容器转换成Servlet,这个过程是在服务器端产生的,在第一次编译之后该Servlet实例便常驻内存。

    JSP语法
    (1)jsp模板元素

    Jsp页面中的html内容称之为jsp模板元素。Jsp模板元素定义了网页的基本骨架,即定义了页面的结构和外观。

    (2)jsp脚本表达式

    Jsp脚本表达式用于将程序数据输出到客户端:
    语法:<%=x%>
    Jsp引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.print(...)将数据输出给客户端。

    (3)jsp脚本片断

    Jsp脚本片断用于在jsp页面中编写多行java代码。
    语法:<% 多行java代码 %>
    注意:jsp脚本片断只能出现java代码,不能出现其它模板元素,jsp引擎在翻译jsp页面中,会将jsp脚本片断中的java代码将被原封不动地放到servlet中的_jspServlet方法中。Jsp脚本片断中的java代码必须严格遵循java代码,例如,每执行语句后面必须用分号结束。
    在一个jsp页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、html标记和其他jsp元素。多个脚本片断的代码可以相互访问,就像将所有的代码放在一对<%%>之中的情况。
    单个脚本片断中的java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的java语句,例如:

      <%
           for(int i = 0; i < 5; i++)
       {
    %>
    <H1>JSP</H1>
      <%
        }
    %>
    
    (4)jsp声明

    Jsp页面中编写的所有代码,默认会翻译到servlet的service方法中,而jsp声明中的java代码会被翻译到 _jspService 方法的外面。语法:
    <%! Java代码 %>
    所以,jsp声明可以用于定义jsp页面转换成的servlet程序的静态代码块、成员变量和方法。多个静态代码块、变量和函数可以定义在一个jsp声明中,也可以分别单独定义在多个jsp声明中。Jsp隐式对象的作用范围仅限于servlet的 _jspServeice 方法,所以在jsp声明中不能使用这些隐式对象。
    注意:不能在jsp中定义名字为 jspInit 或 jspDestroy 的方法,这样在将jsp翻译成servlet时会将原带的相关方法覆盖掉。

    (5)jsp注释

    Jsp中使用<%--注释信息--%>格式添加注释,但是注意:这个和html页面中的不同的是,jsp中的注释信息不会被翻译到servlet中,这样就不会被显示在页面上,但是html中的注释是会被发送到浏览器中的。

    5. jsp指令

    (1)Jsp指令是为jsp引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理jsp页面中的其余部分。一共有三个指令:page指令、include指令、taglib指令。这里只讲前两个,最后一个是用于自定义标签上的,以后会讲。

    jsp指令有以下三种:

    page指令:称为页面指令,用来定义jsp页面的全局属性。语法格式如下:<%@ page [属性="值" 属性="值"]%>

    # include指令:是加载文件指令,它在jsp被编译前就将文件加载进jsp中合并成一个新的jsp文件,因此当该文件改变时,jsp要重新被编译一次。include指令的格式如下:<%@ include file = "path"%>该指令只有一个属性file,该指令用于指向要加载的文件的相对地址

    taglib指令:是用来引用标签库并设置标签库前缀,说白了就是自定义自己的jsp标记。格式如下:<%@ taglib uri="标签库地址" prefix = "标签库前缀" %>使用标记方式如下:<标签库前缀:标签名 参数>

    结合serlvet的知识,以下是一个结合serlvet使用的Jsp实例,也就是一个简单的MVC结构的实例。

     //modell.java
     import java.util.Arrays;
     import java.util.List;
    
     public class modell {
      
     public List<String> getData(){
         
        String []name={"张三","李四","王五"};
        //将数组数据返回
     return Arrays.asList(name);
     }
    }
    
    //ControllServlet
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class ControllServlet extends HttpServlet {
    
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
                  this.doPost(request, response);
    }
    
    
    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
                response.setContentType("text/html;charset=utf-8");
                modell md=new modell();
                List<String>list =md.getData();
                request.setAttribute("LIST", list);
                request.getRequestDispatcher("/view.jsp").forward(request,response);//方法返回的是一个对象,再一点就是这个对象再调用这个方法,因为类成员可以使另一个类的对象。
    }
    
    }
    
    //JSP
      <%@ page language="java"  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>
      <title>JSP测试</title>
      </head>
      <body>
         <%
        //从request域对象中获取LIST字符串所对应的集合
        List<String> list = (List<String>)request.getAttribute("LIST");
    %>
    <table border="2" align="center" width="30%">
        <caption><h2>text</h2></caption>
        <thead>
            <tr>
                <th>XXX</th>            
            </tr>
        </thead>
        <tbody align="right">
            <%for(String name : list){%>
                <tr>
                    <td>
                        <%=name%>
                    </td>
                </tr>
            <%}%>
        </tbody>        
    </table>
    
    
      </body>
      </html>
    

    相关文章

      网友评论

          本文标题:serlvet与JSP的简单实例

          本文链接:https://www.haomeiwen.com/subject/geucmxtx.html