package web;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List; import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import dao.EmployeeDAO;
import entity.Employee; public class ActionServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置解码所使用的字符集,注意要与客户端保持一致
request.setCharacterEncoding("utf-8");
// 告诉浏览器,服务器返回的数据类型
// (通过设置content-type消息头的值)
response.setContentType("text/html;charset=utf-8");
String uri = request.getRequestURI();
String action = uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf("."));
System.out.println(action);
if ("/list".equals(action)) {
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
// 访问数据库,获取所有员工信息
EmployeeDAO dao = new EmployeeDAO();
try {
List<Employee> employees = dao.findAll();
// 依据查询到的员工信息,输出表格
// 因为servlet不擅长生成页面,我们使用转发
// 交给JSP来生成页面
// 1.将处理结果绑定到request
request.setAttribute("employees", employees);
// 2.获取转发器
RequestDispatcher rd = request.getRequestDispatcher("listEmp.jsp");
// 3.转发
rd.forward(request, response);
} catch (Exception e) {
e.printStackTrace();
out.println("系统繁忙,稍后重试");
}
// 可以不调用close方法,容器会自动调用close方法。
out.close();
} else if ("/add".equals(action)) {
PrintWriter out = response.getWriter();
// 调用request对象提供的方法来读取请求参数值
String name = request.getParameter("name");
String salary = request.getParameter("salary");
String age = request.getParameter("age"); // 一般来说,服务器端应该对请求参数值做一些
// 合法性检查,比如检查姓名是否为空,这儿
// 暂时不做。 // 将员工信息插入到数据库
EmployeeDAO dao = new EmployeeDAO();
Employee e = new Employee();
e.setName(name);
e.setSalary(Double.parseDouble(salary));
e.setAge(Integer.parseInt(age));
try {
dao.save(e);
// 重定向
out.println("插入成功");
response.sendRedirect("list.do"); } catch (Exception e1) {
e1.printStackTrace();
out.println("<h1>系统繁忙,稍后重试</h1>");
}
// 关闭流。
out.close();
} else if ("/del".equals(action)) {
// 读取要删除员工的id
String id = request.getParameter("id");
EmployeeDAO dao = new EmployeeDAO();
PrintWriter pw = response.getWriter();
try {
dao.del(Integer.parseInt(id));
response.sendRedirect("list.do");
} catch (NumberFormatException e) {
e.printStackTrace();
pw.println("系统繁忙,稍后重试");
}
} else if ("/load".equals(action)) {
PrintWriter out = response.getWriter();
// 读取员工的id
String id = request.getParameter("id");
// 依据id访问数据库,获取员工信息
EmployeeDAO dao = new EmployeeDAO();
try {
Employee e = dao.findById(Integer.parseInt(id));
// 依据查询到的员工信息,生成表单
request.setAttribute("e", e);
request.getRequestDispatcher("updateEmp.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
out.println("系统繁忙,稍后再试!");
}
} else if ("/modify".equals(action)) {
PrintWriter writer = response.getWriter();
// 读取要修改的员工信息
String id = request.getParameter("id");
String name = request.getParameter("name");
String salary = request.getParameter("salary");
String age = request.getParameter("age");
Employee e = new Employee();
EmployeeDAO dao = new EmployeeDAO();
e.setId(Integer.parseInt(id));
e.setName(name);
e.setSalary(Double.parseDouble(salary));
e.setAge(Integer.parseInt(age)); try {
dao.modify(e);
response.sendRedirect("list.do");
} catch (Exception e1) {
e1.printStackTrace();
writer.println("系统繁忙,稍后在式");
}
}
}
} //properties

# connection parameters
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
user=system
password=123456
# datasouce parameters
initSize=1
maxSize=2

 

JSP动态员工登陆案例的更多相关文章

  1. SSM整合Dubbo登陆案例

    登陆案例 一.创建Service项目存放共同数据 1.1  创建实体类 private long id; private String loginName; private String userNa ...

  2. 09_android入门_采用android-async-http开源项目的GET方式或POST方式实现登陆案例

    根据08_android入门_android-async-http开源项目介绍及使用方法的介绍,我们通过最常见的登陆案例进行介绍android-async-http开源项目中有关类的使用.希望对你学习 ...

  3. C#基础练习(事件登陆案例)

    Form1的后台代码: namespace _08事件登陆案例 {     public partial class Form1 : Form     {         public Form1() ...

  4. android 登陆案例_最终版本 sharedpreference

    xml  与之前的登陆案例相同 java代码: package com.itheima.login; import java.util.Map; import com.itheima.login.ut ...

  5. JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apache/IIS的整合)

    链接地址:http://www.cnblogs.com/dartagnan/archive/2011/03/25/2003426.html JSP动态网站环境搭建应用中的详细步骤(Tomcat和Apa ...

  6. 09_android入门_採用android-async-http开源项目的GET方式或POST方式实现登陆案例

    依据08_android入门_android-async-http开源项目介绍及用法的介绍,我们通过最常见的登陆案例进行介绍android-async-http开源项目中有关类的使用.希望对你学习an ...

  7. JSP制作简单登陆

    JSP制作简单登陆界面 运行环境 eclipse+tomcat+MySQL 不知道的可以参考Jsp运行环境--Tomcat 项目列表 这里我先把jsp文件先放在Web-INF外面访问 需要建立的几个文 ...

  8. 编写jsp动态网页

    默认情况下,jsp网页必须保存在TOMCAT_HOME/webapps 目录下才能被客户请求. JSP网页的主题仍然是html标签,在需要显示动态数据的地方添加<%%>标记,在其中编写合法 ...

  9. jsp动态图片页面基础

    1. 什么是动态网页? 动态网页是指在服务器端运行的程序或者网页,它们会随不同客户.不同时间,返回不同的网页. 注意:在静态网页中插入flash ,虽然flash是在动的,但是并不是说这个网页就是动态 ...

随机推荐

  1. JavaScript高级程序设计(学习)

    文档模式是:混杂模式和标准模式. 若在文档开始处没有文档类型声明,则浏览器就会开启混杂模式.这种模式在不同的浏览器下行为差异非常大,如果不使用某些hack技术,跨浏览器的行为根本就没有一致性可言. 局 ...

  2. 用async 解放你的大脑

    在js中,代码嵌套和代码回调非常常见,不仅编写麻烦而且异常反人类.让我等码农很是头痛 function () {     function () {         function () {     ...

  3. Python 一些有趣的技巧哦!

    #Python 技巧命令 python 如一股清流,可以说屌到飞起,下面咱就来看看一些屌的东西 ### python2 最简单的web服务 ` python -m SimpleHTTPServer 8 ...

  4. Java排序算法之直接选择排序

    Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...

  5. JavaWeb之session

    Session是服务器端技术 利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自 ...

  6. Windows入门基础:1.关于CreateWindow()函数使用中遇到的问题

    我在实现显示窗口的程序中,遇到一个问题:首先程序没有任何语法错误,编译能够通过,但是就是不能弹出窗口. 后来在MSDN中查询CreateWindow()函数,发现了下面这句话: "If lp ...

  7. VS Code 的常用快捷键

    VS Code 的常用快捷键和插件 一.vs code 的常用快捷键 1.注释: a) 单行注释:[ctrl+k,ctrl+c] 或 ctrl+/ b) 取消单行注释:[ctrl+k,ctrl+u] ...

  8. char , unsigned char 和 signed char 区别

    ANSI C 提供了3种字符类型,分别是char.signed char.unsigned char.char相当于signed char或者unsigned char,但是这取决于编译器!这三种字符 ...

  9. javascript核心概念之——数组

    在javascript中数组就是一个可以存放任何类型的集合.存储在数组中的值用逗号分隔 var arr = ["hello",7,null,undifined,obj,undifi ...

  10. CSS 预处理器中的循环

    本文由 nzbin 翻译,黄利民 校稿.未经许可,禁止转载! 英文出处:css-tricks.com 发表地址:http://web.jobbole.com/91016/ 如果你看过老的科幻电影,你一 ...