时间:2023-05-25 02:42:02 | 来源:网站运营
时间:2023-05-25 02:42:02 来源:网站运营
2018-5-7 JSP_Web_MVC开发(5)-JSP语法:<% //此处编写的是JAVA程序 /*用户看不见的注释*/%><!--This is a visiable comment--><%-- 此类注释为JSP所独有--%>
此处一定要注意:日后编写JSP时候"<%--注释--%>"很常见。<%! class Person{ private String name; private int age; public Person(String name,int age){ this.name=name; this.age=age; } public String toString(){ return "name="+this.name+",age="+this.age; } }%><% out.println(new Person("Tom",20));%>
不过一般而言不会在JSP中定义类,此类操作只是一个介绍。<%! public int add(int x,int y){ return x+y; }%><% out.println(add(20,10));%>
提示:此时定义的方法,就相当于在类中定义的普通方法。<%! public static final String MESSAGE="Hello World"; public int x=10;//全局变量%><% out.println(MESSAGE); out.println(x++);%>
此时的x就相当于全局变量,只会定义一次。<% int x=10; out.println(x ++);%>
此时定义的是一个局部变量,局部变量每次调用的时候都会重复的声明,所以JSP刷新显示内容是不会改变的,永远是10。<% out.println("<table border=/"1/">"); for(int x=1;x<9;x++){ out.println("<tr>"); for(int y=1;y<=x;y++){ out.println("<td>"+x+"*"+y+"="+x*y+"</td>"); } out.println("</tr>"); } out.println("</table>");%>
今后JSP开发中,使用最多的都是“<%%>”,所有的语句几乎都在此处。<%! public static final String MESSAGE="Hello World";%><% int num=10;%><h1><%=MESSAGE%></h1><h1><%="World"%></h1><h1><%=num%></h1>
此时功能和out.println()类似。<table border="1"><% for(int x=1;x<9;x++){%> <tr><% for(int y=1;y<=x;y++){%> <td><%=x%> * <%=y%> = <%=x*y%> </td><% }%> </tr><% } %></table>
此时代码实现了HTML代码与JAVA程序的分离,唯一的缺点是增加了许多Scriptlet代码块。<%@page pageEncoding="GBK" language="java"%><h1>这是测试页面</h1>
page指令之中还有language属性,表示操作的语言。现在有且只有Java。<%@page contentType="text/HTML;charset=GBK"%><h1>这是测试页面</h1>
如果contentType写错了,就会出现下载框(这种情况以前经常会遇到)。<mime-mapping> <extension>doc</extension> <mime-type>application/msword</mime-type></mime-mapping>
以上word的处理形式是 “application/msword”。<%@page pageEncoding="GBK" contentType="application/msword"%>
此时页面就会按照word风格运行,如果使用的是IE会自动弹出下载提示,可以把结果以word形式下载保存。<mime-mapping> <extension>htm</extension> <mime-type>text/html</mime-type></mime-mapping><mime-mapping> <extension>html</extension> <mime-type>text/html</mime-type></mime-mapping>
可以发现,web.xml文件中htm和html后缀处理的MIME是完全相同的。<%@page pageEncoding="GBK" %><%@page import="java.io.*,java.net.*"%><%@page import="java.util.*"%><%@page import="java.text.*"%><h1><%=new SimpleDateFormat("yyyy-MM-dd").format(new Date())%></h1>
既然页面可以导入开发包,那么也一定可以导入sql包,进行数据库的连接操作。下面实现数据读取。<%@page pageEncoding="GBK"%><%@page import="java.sql.*"%><%!//定义数据库连接的常量信息 public static final String DBURL="jdbc:sqlserver://1.25.13.8:1433;DatabaseName=test"; public static final String DBDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver"; public static final String DBUSER="test"; public static final String DBPASSWORD="test";%><% //定义所需要的对象 Connection conn; PreparedStatement pstmt; ResultSet rs;%><%//进行数据库连接操作 String sql=" select swname,swdescription,swtype from [QND_White] "; Class.forName(DBDRIVER); conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD); pstmt=conn.prepareStatement(sql); rs=pstmt.executeQuery();%><center><table border="1" width="90%"> <tr> <td>名称</td> <td>描述</td> <td>类型</td> </tr><%//读取数据 while(rs.next()){ String swname=rs.getString(1); String swdescription=rs.getString(2); String swtype=rs.getString(3);%> <tr> <td><%=swname%></td> <td><%=swdescription%></td> <td><%=swtype%></td> </tr><% }%></table></center><% //关闭数据库连接 conn.close();%>
今后可以利用JSP程序直接与数据库进行交互。<%@include file="路径"%>
为了方便,下面首先建立3个文件。<h1>content.htm</h1>
<h1>content.jsp</h1>
<h1>content.inc</h1>
例 实现导入操作<%@ page pageEncoding="GBK"%><%@include file="content.jsp"%><%@include file="content.htm"%><%@include file="content.inc"%>
执行后发现所有内容会合在一起显示。<jsp:include page="路径"> <jsp:param name="参数名称" value="参数内容"/> <jsp:param name="参数名称" value="参数内容"/> ......</jsp:include>
例 导入静态文件--与<%@include%>相同<%@ page pageEncoding="GBK"%><jsp:include page="content.jsp"/><jsp:include page="content.htm"/><jsp:include page="content.inc"/>
此时的效果与之前静态导入完全相同,没有任何区别。但是使用<jsp:include>导入文件时,如果导入的时动态文件,那么可以传递参数,所有的参数都使用request.getParameter()进行接收。<%@ page pageEncoding="GBK"%><h1>传递参数<%=request.getParameter("username")%></h1><h1>传递参数<%=request.getParameter("password")%></h1>
本页面规定好了所需要传递的参数内容,后面进行导入操作。<%@ page pageEncoding="GBK"%><h1>Hello World!</h1><jsp:include page="param.jsp"> <jsp:param name="username" value="Tom"/> <jsp:param name="password" value="123456"/></jsp:include>
需要特别注意的是,这种标签指令类似HTML代码,是不可能写在Scriptlet之中的。如果现在要想传递一个变量的数据到被包含页面,那么就只能够利用表达式输出了。<%@ page pageEncoding="GBK"%><h1>Hello World!</h1><% String str="123456";%><jsp:include page="param.jsp"> <jsp:param name="username" value="Tom"/> <jsp:param name="password" value="<%=str%>"/></jsp:include>
目前传递变量采用的是表达式输出,以后会有其他形式。<%@ page pageEncoding="GBK"%><% int num=10;%><h1>note.jsp,num=<%=num%></h1>
例 使用静态导入<%@ page pageEncoding="GBK"%><%@include file="note.jsp"%><% int num=2;%><h1>包含页,num=<%=num%></h1>
此时出现语法错误,直接提示变量num重复(Duplicate local variable num)。<%@ page pageEncoding="GBK"%><jsp:include page="note.jsp"/><% int num=2;%><h1>包含页,num=<%=num%></h1>
结果如下:<%@include file="路径"%>
2.动态导入语法<jsp:include page="路径"> <jsp:param name="参数名称" value="参数内容"/> <jsp:param name="参数名称" value="参数内容"/> ......</jsp:include>
<jsp:forward page="路径"> <jsp:param name="参数名称" value="参数内容"/> <jsp:param name="参数名称" value="参数内容"/> ......</jsp:forward>
例 实现跳转操作--跳转到param.jsp页<%@page pageEncoding="GBK"%><h1>Hello World</h1><jsp:forward page="param.jsp"> <jsp:param name="username" value="Jacky"/> <jsp:param name="password" value="123456"/></jsp:forward>
此时可以发现页面的内容实现了跳转,但是路径没有发生任何的改变,这种跳转称为服务器端跳转。关键词:语法