Fork me on GitHub

JSP

html不能写java代码

JSP看起来是HTML,本质是servlet

java代码写在<%%>中称为脚本片段,最终在service方法里运行,❗但不要在JSP里写java代码

jsp声明:<%! %>里面可以写方法

jsp注释:<%– –%>

输出到浏览器<%= >

JSP九大内置对象

不需要声明可以直接用的对象

request

httpservletRequest对象,代表客户端请求

域范围:同一个请求

1
2
String name = request.getParameter("name");
System.out.println("name:"+name);

response(不常用)

httpservletResponse对象,代表服务器响应

session

域范围:同一会话

代表一次会话

1
System.out.println("sessionid="+session.getId());

application

ServletContext对象,代表当前web应用

域范围:同一web应用

1
System.out.print(application.getInitParameter("name"));

out(不常用)

JSPWrite对象,把结果输出到浏览器

config(不常用)

ServletConfig对象,代表当前servlet

1
System.out.print("servlet注册名:"+config.getServletName());

page(不常用)

指的是jsp对应的servlet对象,也就是代表页面

1
System.out.println("page:"+page);

pageContext

页面上下文,可以获取其他八个内置对象,域范围:当前页面

1
System.out.println(pageContext.getRequest()==request);//true

exception(不常用)

异常对象

剩下四个常用的是jsp的四大域对象

路径写绝对路径

EL表达式

从域对象里取值

el表达式没有遍历功能

表单回显:点击提交后用户名输入框依旧显示输入内容

1
2
3
4
5
6
7
8
9
<!-- 麻烦-->
username:<input type="text" name="username" value=<%=request.getParameter("username")==null?"":request.getParameter("username") %> >
<!-- 打印输入用户名 -->
<%=request.getParameter("username") %>

<!-- 简单el-->
username:<input type="text" name="username" value="${param.username }" >
<!-- 打印输入用户名 -->
${param.username }
1
2
3
4
5
<% out.print(request.getAttribute("name")); %>
<!-- 被以下方式替换了 -->
<%=request.getAttribute("name")%>
<!--又被以下El表达式替换了 -->
${name}

从某一个范围中根据域对象名name去取值,如果没有指定从那个域对象里取,默认从小到大取,也就是先从pageContext里取,如果想从指定的域中取,name前面加上、pageScope、requestScope、sessionScope、applicationScope

${sessionScope.name }

如果域名叫user.name :

不加括号:会在request域中找user对象,在user对象中找name对象,在name对象中找name属性

使用括号:[“user.name”].name

${pageContext.request.contextPath }获取当前web应用根目录

el表达式可以自动类型转换

JSTL标签

导入jstl标签库

1
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

c:outvalue=${}:值 default=” “默认值 把结果输出到浏览器,可以解析特殊字符

c:set scope=“ ”:指定域对象,var=“ ”:名字value=“ ”:值

c:remove: var=” “ value=” “

c:if :不能实现else

1
2
3
<c:if test="${param.age<20 }">
太小了,未到达法定结婚年龄!
</c:if>

c:choose判断,相当于if elseif else

1
2
3
4
5
6
7
8
9
10
11
<c:choose>
<c:when test="${param.age<20}">
小于20...
</c:when>
<c:when test="${param.age>=20 && param.age<=100}">
20~100...
</c:when>
<c:otherwise>
大于100...
</c:otherwise>
</c:choose>

c:foreach遍历

属性 描述
items 要被循环的信息
begin 开始的元素(0=第一个元素,1=第二个元素)
end 最后一个元素(0=第一个元素,1=第二个元素)
step 每一次迭代的步长
var 代表当前条目的变量名称
varStatus 代表循环状态的变量名称 .count 表示迭代计数

MVC设计模式

model:应用程序核心,数据库记录列表,bean,封装书库 service和dao

view:显示数据,jsp/html

controller:servlet

view和controller加起来是三层架构的view

0%