一、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案例完整代码