一、jsp是什么?
答:jsp全称是Java Service page。java服务器页面。
二、jsp页面有什么用?
代表servlet程序回传html页面的数据。
jsp页面本质上就是一个servlet程序。
当我们第一次访问jsp页面,tomcat服务器会将页面进行翻译成为.java文件,将它进行翻译成.class文件。
三、jsp的内置对象有哪些?
使用方法:
四、jsp四大域对象是什么?
经常用到,非常有用。
五、Dao、Servlet、jsp文件之间的关系
1、EmpDao.java
2、EmpQueryAllServlet.java
3、EmpQueryAll.jsp
六、数据库表
1、员工表emp
2、用户表users
3、部门表dept
(在显示员工表的部门是时,是直接循环了一个列表String [] depts={"研发部","财务部","销售中心"};
没有连接dept表的外键,所以这个表暂时没有用到)
七、代码部分
前提:
(1)在本案例之前已创建JavaWeb项目;
(2)安装tomcat,并连接idea;
(3)idea连接MySQL;
关于数据库建表、jar包的粘贴、项目路径的设置等在上一篇有详述,这里不赘述。
我的项目路径如下:
代码部分如下:
1、Users.java : 用户账号密码信息的实体类(get/set)
package com.qingruan.bean; public class Users { private Integer id; private String username; private String password; private String sex; private String birthday; private String address; public Users() { // TODO Auto-generated constructor stub } public Users(Integer id, String username, String password, String sex, String birthday, String address) { this.id = id; this.username = username; this.password = password; this.sex = sex; this.birthday = birthday; this.address = address; } @Override public String toString() { return "Users [id=" + id + ", username=" + username + ", password=" + password + ", sex=" + sex + ", birthday=" + birthday + ", address=" + address + "]"; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
2、Emp.java : 员工信息实体类(get/set)
package com.qingruan.bean; public class Emp { private Integer empno; private String ename; private String job ; private double sal; private double comm; private String hiredate; private Integer deptId; public Emp() { // TODO Auto-generated constructor stub } public Emp(Integer empno, String ename, String job, double sal, double comm, String hiredate, Integer deptId) { super(); this.empno = empno; this.ename = ename; this.job = job; this.sal = sal; thism = comm; this.hiredate = hiredate; this.deptId = deptId; } @Override public String toString() { return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + ", sal=" + sal + ", comm=" + comm + ", hiredate=" + hiredate + ", deptId=" + deptId + "]"; } public Integer getEmpno() { return empno; } public void setEmpno(Integer empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public double getSal() { return sal; } public void setSal(double sal) { this.sal = sal; } public double getComm() { return comm; } public void setComm(double comm) { thism = comm; } public String getHiredate() { return hiredate; } public void setHiredate(String hiredate) { this.hiredate = hiredate; } public Integer getDeptId() { return deptId; } public void setDeptId(Integer deptId) { this.deptId = deptId; } }
3、UsersDao.java :数据库语句select * from users where username=? and password=?
package com.qingruan.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.qingruan.bean.Users; import com.qingruan.util.DbUtils; public class UsersDao { private static Connection cn =null; private static PreparedStatement ps=null; private static ResultSet rs=null; public Users usersLogin(String username,String password){ try { cn = DbUtils.getConnection(); String sql="select * from users where username=? and password=?"; ps = cn.prepareStatement(sql); ps.setString(1, username); ps.setString(2, password); rs = ps.executeQuery(); if(rs.next()){ return new Users(rs.getInt("id"), rs.getString("username"), rs.getString("password"), rs.getString("sex"), rs.getString("birthday"), rs.getString("address")); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ DbUtils.close(rs, ps, cn); } return null; } }
4、EmpDao.java : 数据库语句select * from emp(查询)、delete from emp where empno =?(删除)
package com.qingruan.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.qingruan.bean.Emp;
import com.qingruan.util.DbUtils;
public class EmpDao {
private static Connection cn =null;
private static PreparedStatement ps=null;
private static ResultSet rs=null;
/**
* 查询所有职员信息
* @return
*/
public List<Emp> empFindAll(){
List<Emp> list =new ArrayList<Emp>();
try {
cn=DbUtils.getConnection();
ps=cn.prepareStatement("select * from emp");
rs = ps.executeQuery();
while(rs.next()){
list.add(new Emp(rs.getInt("empno"),rs.getString("ename") , rs.getString("job"), rs.getDouble("sal"), rs.getDouble("comm"), rs.getString("hiredate"), rs.getInt("deptId")));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
DbUtils.close(rs, ps, cn);
}
return list;
}
public int deleteById(int empno){
try {
cn=DbUtils.getConnection();
ps=cn.prepareStatement("delete from emp where empno =? ");
ps.setInt(1, empno);
return ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
DbUtils.close(null, ps, cn);
}
return 0;
}
}
5、web.xml : 把login.jsp放在第一个页面出现
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp/xml/ns/javaee"
xmlns:xsi="http://www.w3/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp/xml/ns/javaee http://xmlns.jcp/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>myWeb_war_exploded</display-name>
<welcome-file-list>
<!-- <welcome-file>index.html</welcome-file>-->
<!-- <welcome-file>index.htm</welcome-file>-->
<!-- <welcome-file>index.jsp</welcome-file>-->
<!-- <welcome-file>default.html</welcome-file>-->
<!-- <welcome-file>default.htm</welcome-file>-->
<!-- <welcome-file>default.jsp</welcome-file>-->
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
6、EmpQueryAllServlet.java : 调用EmpDao的查询全表方法
package com.qingruan.controller; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.qingruan.bean.Emp; import com.qingruan.bean.Users; import com.qingruan.dao.EmpDao; @WebServlet("/empQueryAll") public class EmpQueryAllServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //处理请求中文乱码问题 配置post提交的方式 req.setCharacterEncoding("utf-8"); //处理响应中文乱码问题 resp.setContentType("text/html;charset=utf-8"); //从request中取出登陆的用户信息 Users users=(Users) req.getAttribute("users"); //1.调用dao EmpDao dao =new EmpDao(); List<Emp> emps = dao.empFindAll(); //绑定上域对象 req.setAttribute("emps", emps); //请求转发 跳转 req.getRequestDispatcher("/empQueryAll.jsp").forward(req, resp); } }
7、UsersLoginServlet.java : 获取用户输入的账号和密码+调用UserDao的查询方法+进行判断
package com.qingruan.controller; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.qingruan.bean.Users; import com.qingruan.dao.UsersDao; @WebServlet("/loginServlet") public class UsersLoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //处理请求中文乱码问题 配置post提交的方式 req.setCharacterEncoding("utf-8"); //处理响应中文乱码问题 resp.setContentType("text/html;charset=utf-8"); //获得请求中的用户和密码 String username = req.getParameter("username"); String password = req.getParameter("password"); //调用dao UsersDao dao =new UsersDao(); Users users = dao.usersLogin(username, password); if(users!=null){ //System.out.println("登陆成功"); //绑定上request req.setAttribute("users", users); //只能传递到下一个servlet或者是jsp 是一次请求 // 跳转到查询所有职员信息的servlet //resp.sendRedirect("empQueryAll"); req.getRequestDispatcher("/empQueryAll").forward(req, resp); }else{ System.out.println("登陆失败"); resp.sendRedirect("login.jsp"); } } }
9、EmpDeleteServlet.java : 获取用户请求删除的员工号empid+调用EmpDao的删除方法+弹窗删除成功
package com.qingruan.controller; import java.io.IOException; import java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.qingruan.dao.EmpDao; @WebServlet("/empDelete") public class EmpDeleteServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this. doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //处理请求中文乱码问题 配置post提交的方式 req.setCharacterEncoding("utf-8"); //处理响应中文乱码问题 resp.setContentType("text/html;charset=utf-8"); //获取请求中的empno int empno=Integer.parseInt(req.getParameter("empno")); //调用dao EmpDao dao =new EmpDao(); int result = dao.deleteById(empno); if(result>0){ resp.getWriter().write("<script>alert('删除成功');</script>"); }else{ resp.getWriter().write("<script>alert('删除失败');</script>"); } //此时 我们不可以使用请求转发或者是重定向 resp.getWriter().write("<script>window.location.href='empQueryAll'</script>"); } }
10、login.jsp :输入框和按钮的排版
<%@ page language="java" import="java.util.*,java.io.*,com.qingruan.bean.*" pageEncoding="UTF-8" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="loginServlet" method="post"> username:<input name="username"/> <br/> password:<input name="password"/><br/> <input type="submit" value="登录"/> </form> </body> </html>
11、empQueryAll.jsp :table表格排版 + 获取员工表信息(emp.getEmpno) + 弹框(真的要删除吗?)
<%@ page language="java" import="java.util.*,com.qingruan.bean.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'empQueryAll.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript"> function del(empno){ var bool= window.confirm("确认要删除吗?"); if(bool){ //真正的删除 使用js代码跳转到删除的servlet程序 window.location.href="empDelete?empno="+empno; } } </script> </head> <body> <% //获取request域中的对象集合 ArrayList<Emp> list=(ArrayList<Emp>)request.getAttribute("emps"); String [] depts={"研发部","财务部","销售中心"}; %> <table border="1" align="center"> <tr> <th>empno</th> <th>ename</th> <th>job</th> <th>hiredate</th> <th>dept</th> <th>操作</th> </tr> <% for(Emp emp : list){ %> <tr> <td><%=emp.getEmpno() %></td> <td><%=emp.getEname() %></td> <td><%=emp.getJob() %></td> <td><%=emp.getHiredate() %></td> <td><%=depts[emp.getDeptId()-1]%></td> <td><a href="javaScript:del(<%=emp.getEmpno() %>);">删除</a></td> </tr> <%} %> </table> </body> </html>
八、效果如下
1、登录页面
2、查看整个员工表
3、弹窗-确认要删除吗?
4、确认删除后,返回查询页
更多推荐
【jsp新手入门】idea+MySQL+tomcat案例完整代码
发布评论