作用
简化jsp的代码编写。
替换 <%%> 写法。
一般与EL表达式配合
使用
- 导入jar文件到工程的WebContent/Web-Inf/lib jstl.jar standard.jar
- 在jsp页面上,使用taglib 指令,来引入标签库
注意
如果想支持 EL表达式,那么引入的标签库必须选择1.1的版本,1.0的版本不支持EL表达式。
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
常用标签
c:set
${sessionScope.name }
c:if
判断test里面的EL表达式是否满足,
如果满足,就执行c:if标签中的输出,
c:if 是没有else的。
26 }”>
年龄大于了26岁…
年龄小于了26岁…
定义一个变量名 flag 去接收前面表达式的值,然后存在session域中
26 }” var=”flag” scope=”session”>
年龄大于了26岁…
取flag
${flag }
c:forEach
从1 开始遍历到10 ,得到的结果 ,赋值给 i ,并且会存储到page域中, step , 增幅为2,
i–>[begin,end]varStatus:代表循环过程中存储临时状态值status.count:当前输出元素个数items:表示遍历哪一个对象,注意,这里必须写EL表达式。var:遍历出来的每一个元素用user去接收。
i
–
>
[
b
e
g
i
n
,
e
n
d
]
v
a
r
S
t
a
t
u
s
:
代
表
循
环
过
程
中
存
储
临
时
状
态
值
s
t
a
t
u
s
.
c
o
u
n
t
:
当
前
输
出
元
素
个
数
i
t
e
m
s
:
表
示
遍
历
哪
一
个
对
象
,
注
意
,
这
里
必
须
写
E
L
表
达
式
。
v
a
r
:
遍
历
出
来
的
每
一
个
元
素
用
u
s
e
r
去
接
收
。
{user.name } ----${user.age }
学生信息管理系统
需求分析
操作步骤
1.login.jsp登录页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>欢迎使用登录系统</h2>
<form action="LoginServlet" method="post">
账号<input type="text" name="username"/>
密码<input type="text" name="password"/>
<input type="submit" value="登录"/>
</form>
</body>
</html>
2.LoginServlet.java程序编写
此处需要分步:DAO--UserDao/UserDaoImpl(管理员用户层实现)
--> 主要做获取login的username和password,与mysql判断
--> true则跳转到stu_list的界面,显示所有学生信息
--> 衍生出stu_list.jsp页面和StuDao/StuDaoImpl(学生信息表的显示)
--> 与mysql交互,获取所有学生信息
--> false则显示登录失败
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//提交数据有可能中文,设置
request.setCharacterEncoding("UTF-8");
//网页输出
response.setContentType("text/html;charset=UTF-8");
//1.获取客户端提交的信息
String username = request.getParameter("username");
String password = request.getParameter("password");
//response.getWriter().write(username + "= =" + password);
//打印测试
//System.out.println(username + "==" + password);
//2.访问dao,看看是否满足登录
UserDao dao = new UserDaoImpl();
boolean isSuccess = dao.login(username, password);
//3.针对dao的返回结果,做出响应
if(isSuccess){
// response.getWriter().write("登录成功");
//1.查询所有学生信息
StuDao stuDao = new StuDaoImpl();
List<Student> list = stuDao.findAll();
//2.先把这个集合存到作用域
request.getSession().setAttribute("list", list);
//3.重定向
response.sendRedirect("stu_list.jsp");
}else{
response.getWriter().write("用户名或密码错误");
}
}
UserDao.java
//该dao定义了对用户表的访问规则
public interface UserDao {
/*此处简单返回一个Boolean类型,表明成功或失败即可
*
* 开发中,登录的方法,一旦成功,应该返回个人信息
* @param:username
* @param:password
*
* @return ture 成功
* @return false 失败
* */
boolean login(String username, String password);
}
UserDaoImpl.java
@Override
public boolean login(String username,String password) {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
//获取连接
conn = JDBCUtil.getConn();
//校验是否获取到连接
//System.out.println("数据库状态"+conn.isClosed());
//创建ps对象
String sql = "select * from t_user where username=? and password=?";
ps = conn.prepareStatement(sql);
//设置内容
ps.setString(1, username);
ps.setString(2, password);
//开始执行
rs = ps.executeQuery();
//如果能成功移到下一行,表明有这个用户
return rs.next();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
JDBCUtil.release(conn, ps, rs);
}
return false;
}
StuDao.java
public interface StuDao {
/*
* 查询出所有的学生信息
* 返回list集合*/
List<Student> findAll();
}
StuDaoImpl.java
//定义查询规则,查询所有信息,返回list集合
@Override
public List<Student> findAll() {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
//创建集合,存储student
List<Student> list = new ArrayList<Student>();
try {
//获取连接
conn = JDBCUtil.getConn();
String sql = "select * from t_stu";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
Student stu = new Student();
stu.setId(rs.getInt("id"));
stu.setAge(rs.getInt("age"));;
stu.setName(rs.getString("name"));;
stu.setGender(rs.getString("gender"));;
stu.setAddrress(rs.getString("addrress"));;
list.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCUtil.release(conn, ps, rs);
}
return list;
}
stu_list.jsp代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>学生信息管理表</title>
</head>
<body>
<h2>学生列表</h2>
<table border="1" width="700">
<tr>
<td>编号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>住址</td>
</tr>
<c:forEach items="${list }" var="stu">
<tr>
<td>${stu.id }</td>
<td>${stu.name }</td>
<td>${stu.age }</td>
<td>${stu.gender }</td>
<td>${stu.addrress }</td>
</tr>
</c:forEach>
</table>
</body>
</html>