controller:新建可以servlet的代码的包
1.获取不同的标签的内容
复选框的获取:
req.getParameterValues();获取多个值
注意空指针的异常
表单:如果没有value属性的的话,以标签之间的文本为主,如果有的话就以value为准
<textarea name="" cols="" row=""></textarea>
2.jstl的标签
<c:choose>
类似于if else
<c:choose><when test="${条件(可用and)}"></c:choose>
<c:otherwise></c:otherwise> 类似于else
req.setAttribute():会解析我的HTML的代码
<c:out value="${作用域}" escapeXml="">
escapeXml(为true的时候会忽略,false的时候会将HTML的代码解析)
value:获取作用域的值
3.jsp/jstl/fmt
格式化:格式处理
日期
<fmt:formatDate="${birthday}" pattern="yyyy-MM-dd HH:ss.SSS"></fmt:formatDate>
<fmt:formatDate="${birthday}" pattern="yyyy年MM月dd日 HH:ss.SSS"></fmt:formatDate>
数字
<fmt:formatNumber vlaue="${number}" pattern="#######(整数部分).##(小数部分)">
<fmt:formatNumber vlaue="${number}" pattern="000000(整数部分).##(小数部分)">
//不够的位数用零来补齐
jsp遗留
###3.1jsp的脚本
<% Java代码 out.println();将结果打印在页面山 %>
会让页面更加的复杂(难以维护,禁止)
###3.2jsp表达式
<%=表达式%>
3.3jsp指令(不禁止)
<%@pagecontenetType="页面的类型与编码"language="java" isELIgnore="false(不会忽略el表达式,若为true的时候就会忽略)"errorpage="错误时要跳转的页面(只有错误,异常发生时才会跳转"%>
如果要显示错误,错误页面的代码为
<%@page contentType=""language="java" isErrorpage="true"%>
<%=exception(只能配合jsp的表达式和脚本来使用)%>
导入标签库
<%@taglib prefix="前缀" uri="标签的唯一的标识"%>
新建一个jsp的网页将共同的代码的部分放在这个网页里面(menu.jsp)
<%@ include file="menu.jsp"%>
##3.4jsp 声明
一般的格式
声明
<%! 声明变量和方法 int s=0; public int sum(int a,int b){ return a+b; } %>
脚本
<% int s=9; %> <%=i%>
优先级:
jsp要工作的话就需要先编译为Java类
声明的部分就是这个类的成员变量和成员方法
脚本其实就是继承父类的service的方法
脚本的变量(局部变量)优先于声明的变量(实例变量)
实例变量<%=s++%>
会一直增长
局部变量<%=s++%>
重置
访问jsp的
第一次访问时将jsp转译为一个*.java 的文件
然后将一个java 的文件编译为一个.class的字节码
加载到虚拟机里面,生命周期类似于Servlet的生命周期
隐式对象(无需声明就可以使用)
一共有9个:
(1)request(请求对象)
(2)response (响应对象)
(3)out(字符输出流)
(4)pageContext (页面上下文对象,可以间接获得request的对象并可以存入page的作用域中)
(5)session 变量的作用范围为一次会话
(6)application 变量的范围为整个应用程序有效config jsp的配置信息
(7)page 当前的jsp的对象
(8)exception代表是异常信息(当isErrorPage=“true”)
(9)config:配置信息
作用域:
page作用域:当前的页面作用域生效
request的作用域:一次请求内都有效
forward 相当于是两个页面是同一个请求
Servlet与jsp的跳转也算是同一个请求