美文网首页
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