jsp页面相比静态页面html来说,就是多了一些脚本,利用这些脚本来动态地改变页面内容的显示。
1.JSP脚本写法
1 <% 这里写java代码; %>
2 <%! JSP声明,用来声明变量、方法; %>
3 <%= 表达式 %>
4 <%-- JSP注释 --%>
注意:表达式后面不能接分号。
2.JSP指令
1 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
2 <%@ include file="login_success.jsp" %>
page指令,基本上可以说是每个jsp页面的标配吧,它定义了这个jsp页面脚本语言--java,解析类型--html,
内容编码--utf-8,以及页面的编码-utf-8.
include指令,这个指令相当于html的iframe标签,实现在这个页面中内嵌一个其他页面,这个指令位置放在
哪,那么新页面的渲染位置就在哪。
3.JSP动作
表单获取用户名、密码;
1 <%--用javabean规则建一个Users类(eco包下),实例化一个对象newUser --%>
2 <jsp:useBean id="newUser" class="eco.Users" scope="page"/>
3 <%--设置newUser的属性值,值来自于表单,*号表示取得所有属性值赋给对应的newUser对象 --%>
4 <%--属性名如果不写*,可以填newUser对应的属性,但是没有填的属性就获取不到 --%>
5 <jsp:setProperty name="newUser" property="*" />
6 <%--调用newUser对象的getter方法获取属性值,渲染到页面 --%>
7 姓名:<%=newUser.getUsername() %>
8 密码:<%=newUser.getPassword() %>
注意:登录界面填写的用户名、密码数据类型一定要和Users类中规定的数据类型一致!
手动设置输出的用户名、密码;
1 <form id="login" action="login.jsp?mypassword=88888" method="post">
2 <jsp:useBean id="newUser" class="eco.Users" scope="page"/>
3 <%--手动设置username的值vaule--%>
4 <jsp:setProperty name="newUser" property="username" value="eco" />
5 <%--手动设置password的值,值来自于表单发送请求时设置的mypassword值--%>
6 <jsp:setProperty name="newUser" property="password" param="mypassword" />
7 姓名:<%=newUser.getUsername() %>
8 密码:<%=newUser.getPassword() %>
上面最后一个是将发送请求时URL里的mypassword值取出赋值给newUser对象的password属性;
<%=request.getParameter("mypassword") %>这句命令即是获取发送请求时URL里的mypassword值。
1 <jsp:include page="login_success.jsp" flush="true" />
这是一个include动作,功能和其指令一样,page属性表示要插入的页面,flush属性表示是否从缓冲中读取。
1 <jsp:forward page="login_success.jsp" />
这是一个服务器转发动作,相当于
request.getRequestDispatcher("login_success.jsp").forward(request, response);
将登录页面发来的请求转发到login_success.jsp页面,这个过程是一次请求,虽然经过了两个页面。
1 <jsp:forward page="login_success.jsp" >
2 <jsp:param name="e-mail" value="eco@163.com" />
3 </jsp:forward>
parameter动作通常和forward一起使用,登录表单发送请求给当前页面时只保存了用户名、密码两个信息,
当前页面要转发这次请求给login_success.jsp页面,转发之前,为这次请求添加了一个e-mail属性,那么,
我们可以在login_success.jsp页面通过<%=request.getParameter("e-mail") %>获取之前添加的e-mail属性。