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. SignalR的一点点东西

    JS部分 $.connection.hub.start().done(function () { alert(ok); }).fail(function (error) { alert(error); ...

  2. 关于js中两种定时器的设置及清除(转载)

    1.JS中的定时器有两种: window.setTimeout([function],[interval]) 设置一个定时器,并且设定了一个等待的时间[interval],当到达时间后,执行对应的方法 ...

  3. JS 拖动DIV 需要JQUERY 支持

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. JavaScript 方法调用模式和函数调用模式

    这两天在读<JavaScript语言精粹>关于第4章函数调用的几种模式琢磨了半天. 这里就说一下方法调用模式跟函数调用模式. 方法调用模式: 当一个函数被保存为对象的一个属性时,我们称它为 ...

  5. supervisor安装配置

    1.安装 下载:https://codeload.github.com/Supervisor/supervisor/zip/3.1.3 2.安装 .zip cd supervisor- python ...

  6. (转)Linux core 文件介绍与处理

    1. core文件的简单介绍 在一个程序崩溃时,它一般会在指定目录下生成一个core文件.core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的. 2. 开启或关闭core文件的生成用以 ...

  7. 利用shell批量改名和linux中取随机数的方法

    先批量创建文件 #!/bin/sh if [ ! -d /tmp/chenyao ] then mkdir /tmp/chenyao -p fi cd /tmp/chenyao ..} do touc ...

  8. 解决codeblock不能运行的问题

    codeblock 编译失败 软件 IDE codeblock这软件的确不错,但是除此安装使用就会不小心入坑.你是不是满心欢喜的下载好codeblock,敲入代码,点击运行的时候却总是没反应呢? 如果 ...

  9. js放大镜

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. 《Django By Example》第十一章 中文 翻译 (个人学习,渣翻)

    第十一章 缓存内容 (译者 @ucag 注:这是倒数第二章,最后一个项目即将完成. @夜夜月 将会接过翻译的最后一棒.这本书的翻译即将完成.这也是我翻译的最后一章,作为英语专业的学生,我对于翻译有了更 ...