JAVAWEB之servlet重定向+一个用servlet对员工增删改查的操作例子
2016-11-16 22:59
459 查看
重定向
什么是重定向服务器通知浏览器向一个新的地址发送请求
注: 可以发送一个302状态码和一个location消息头
该消息头包含了一个地址。这个地址称为重定向地址。浏览器收到之后,会立即向重定向地址发请求
2、如何重定向
response.sendRedirect(String url);
注: url就是重定向地址。
重定向之后,容器会清空response对象中保存的数据
3、特点
重定向地址是任意的。
重定向之后浏览器地址栏的地址会发送改变
只是在原来自己点击跳转员工列表的改成了
response.sendRedirect("emplist");
自动就跳转到emplist页面了。
重定向后的java代码还会继续执行!
每次的out.println并没有发生过去,而是写到了response里去
当然也可以发生一段js代码定时器,几秒后向服务器发送请求。
就可以实现添加完成后等待几s在跳转到员工列表
实现可以删除员工
1、id传给服务器
2、按着id删除
3、重定向当前页面
然后再实现修改,点击修改,带着id参数到一个页面,用这个id进行查询返回有详细信息的form表单,然后可以修改表单的信息,除了id。然后提交给一个servlet。update更新。再次跳转到员工列表
del.java:删除
EmpDemo.java:添加员工
Emplist:列出员工列表
LoadEmpServlet:返回一个根据id返回的form表单
Modify.java:真正修改的,LoadEmpServlet提交给这个
代码:
del.java
package web; import java.io.IOException; import java.io.PrintWriter; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class del extends HttpServlet { public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ response.setContentType("text/html;charset=utf-8"); int id = Integer.parseInt(request.getParameter("id")); PrintWriter out = response.getWriter(); java.sql.Connection conn = null; java.sql.PreparedStatement prep = null; try { //加载驱动 Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsd1507db", "root", "root"); prep =conn.prepareStatement("delete from emp where id=?"); prep.setInt(1, id); prep.executeUpdate(); //依据查询到的数据生成表格 response.sendRedirect("emplist"); } catch (SQLException e) { // TODO Auto-generated catch block /* * 1、记日志 */ e.printStackTrace(); /* * 1、看异常是否能够恢复,如果能够恢复则立即恢复,如果不能够恢复 * (比如,数据库服务暂停,网络中断等,这样的异常一般称之为系统异常) * 则提示用户稍后重试 */ out.println("稍后重试"); e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(conn!=null){ } try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); out.println("出现错误"); } }//finally } }
EmpDemo.java
package web; import java.io.IOException; import java.io.PrintWriter; import java.sql.DriverManager; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.mysql.jdbc.Connection; import com.mysql.jdbc.PreparedStatement; public class EmpDemo extends HttpServlet { public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ request.setCharacterEncoding("GBK"); String name = request.getParameter("name"); String salary = request.getParameter("salary"); String age = request.getParameter("age"); /* * 对请求参数一定要做合法性的检查 */ String str = "<h1>"+"name:"+name+"<h1><br>"+"<h1>"+"salary"+salary+"<h1><br>"+"age"+age; //设置服务器返回的数据类型及编码 response.setContentType("text/html;charset=GBK"); //获得一个输出流,把内容发送给浏览器 PrintWriter out = response.getWriter(); out.println(str); //然后将员工信息插入到数据库 java.sql.Connection conn = null; java.sql.PreparedStatement prep = null; try { //加载驱动 Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsd1507db", "root", "root"); prep = conn.prepareStatement("INSERT INTO emp (name,salary,age) VALUES(?,?,?)"); prep.setString(1,name); prep.setDouble(2, Double.parseDouble(salary)); prep.setInt(3, Integer.parseInt(age)); prep.executeUpdate(); response.sendRedirect("emplist"); } catch (SQLException e) { // TODO Auto-generated catch block /* * 1、记日志 */ e.printStackTrace(); /* * 1、看异常是否能够恢复,如果能够恢复则立即恢复,如果不能够恢复 * (比如,数据库服务暂停,网络中断等,这样的异常一般称之为系统异常) * 则提示用户稍后重试 */ out.println("稍后重试"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); out.println("出现错误"); } } } out.close(); } }
Emplist.java
package web; import java.io.IOException; import java.io.PrintWriter; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; public class Emplist extends HttpServlet { public void service(ServletRequest request,ServletResponse response)throws ServletException,IOException{ //设置服务器返回的数据类型及编码 response.setContentType("text/html;charset=GBK"); //获得一个输出流,把内容发送给浏览器 PrintWriter out = response.getWriter(); //然后将员工信息插入到数据库 java.sql.Connection conn = null; java.sql.PreparedStatement prep = null; ResultSet rst = null; try { //加载驱动 Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsd1507db", "root", "root"); prep =conn.prepareStatement("select * from emp"); rst = prep.executeQuery(); out.println("查询正常~~~"); //依据查询到的数据生成表格 out.println("<table border='1' width='60%'>"); out.println("<tr><td>ID</td><td>姓名</td><td>薪水</td><td>年龄</td>"+"<td>操作</td></tr>"); while(rst.next()){ int id = rst.getInt("id"); String name = rst.getString("name"); double salary = rst.getDouble("salary"); int age = rst.getInt("age"); out.println("<tr><td>"+id+"</td><td>"+name+"</td><td>"+salary+"</td><td>"+age+"</td>" + "<td><a href='del?id="+id+"'>删除</a> <a href='load?id="+id+"'>修改</a></td></tr>"); } out.println("</table><br/>"); out.println("<a href ='emp.html'>添加员工</a>"); } catch (SQLException e) { // TODO Auto-generated catch block /* * 1、记日志 */ e.printStackTrace(); /* * 1、看异常是否能够恢复,如果能够恢复则立即恢复,如果不能够恢复 * (比如,数据库服务暂停,网络中断等,这样的异常一般称之为系统异常) * 则提示用户稍后重试 */ out.println("稍后重试"); e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(conn!=null){ } try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); out.println("出现错误"); } }//finally } }
LoadEmpServlet.java
package web; import java.io.IOException; import java.io.PrintWriter; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoadEmpServlet extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ response.setContentType("text/html;charset=utf-8"); int id = Integer.parseInt(request.getParameter("id")); PrintWriter out = response.getWriter(); //读取要修改的员工的id java.sql.Connection conn = null; java.sql.PreparedStatement prep = null; ResultSet rst = null; try { //加载驱动 Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsd1507db", "root", "root"); prep =conn.prepareStatement("select * from emp where id=?"); prep.setInt(1, id); rst = prep.executeQuery(); //依据查询到的员工信息生成一个修改页面 if(rst.next()){ String name = rst.getString("name"); double salary = rst.getDouble("salary"); int age = rst.getInt("age"); out.println("<form action='modify'method='post' >"); out.println("ID:"+id+"<br>"); out.println("姓名:"+"<input name='name' value="+name+">"); out.println("工资:"+"<input name='salary' value="+salary+">"); out.println("年龄:"+"<input name='age' value="+age+">"); //把id参数也给传过去,所以做了一个隐藏的name=id的,只有有写name的才会表单提交 out.println("<input type='hidden' name='id' value='"+id+"'>"); out.println("<input type='submit' value='ok'>"); out.println("<form>"); } // } catch (SQLException e) { // TODO Auto-generated catch block /* * 1、记日志 */ e.printStackTrace(); /* * 1、看异常是否能够恢复,如果能够恢复则立即恢复,如果不能够恢复 * (比如,数据库服务暂停,网络中断等,这样的异常一般称之为系统异常) * 则提示用户稍后重试 */ out.println("稍后重试"); e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(conn!=null){ } try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); out.println("出现错误"); } }//finally } }
Modify.java
package web; import java.io.IOException; import java.io.PrintWriter; import java.sql.DriverManager; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Modify extends HttpServlet{ public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ response.setContentType("text/html;charset=utf-8"); int id = Integer.parseInt(request.getParameter("id")); String name = request.getParameter("name"); double salary = Double.parseDouble(request.getParameter("salary")); int age = Integer.parseInt(request.getParameter("age")); PrintWriter out = response.getWriter(); //对其进行更新 java.sql.Connection conn = null; java.sql.PreparedStatement prep = null; try { //加载驱动 Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsd1507db", "root", "root"); prep =conn.prepareStatement("update emp set name=? ,salary=?,age=? where id=?"); prep.setString(1, name); prep.setDouble(2, salary); prep.setInt(3, age); prep.setInt(4, id); System.out.println(id); System.out.println(name); prep.executeUpdate(); //依据查询到的数据生成表格 response.sendRedirect("emplist"); } catch (SQLException e) { // TODO Auto-generated catch block /* * 1、记日志 */ e.printStackTrace(); /* * 1、看异常是否能够恢复,如果能够恢复则立即恢复,如果不能够恢复 * (比如,数据库服务暂停,网络中断等,这样的异常一般称之为系统异常) * 则提示用户稍后重试 */ out.println("稍后重试"); e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(conn!=null){ } try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); out.println("出现错误"); } }//finally } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>emp</servlet-name> <!-- 完整的类名--> <servlet-class>web.EmpDemo</servlet-class> </servlet> <servlet> <servlet-name>emplist</servlet-name> <servlet-class>web.Emplist</servlet-class> </servlet> <servlet> <servlet-name>empdelete</servlet-name> <servlet-class>web.del</servlet-class> </servlet> <servlet> <servlet-name>empload</servlet-name> <servlet-class>web.LoadEmpServlet</servlet-class> </servlet> <servlet> <servlet-name>empupdate</servlet-name> <servlet-class>web.Modify</servlet-class> </servlet> <servlet-mapping> <!-- 两个name要一致!!! --> <servlet-name>emp</servlet-name> <!-- 以/开头 --> <url-pattern>/emp</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>emplist</servlet-name> <url-pattern>/emplist</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>empdelete</servlet-name> <url-pattern>/del</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>empload</servlet-name> <url-pattern>/load</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>empupdate</servlet-name> <url-pattern>/modify</url-pattern> </servlet-mapping> </web-app>
效果
添加员工添加完,直接302跳转到员工列表,看到增加的员工
有修改和删除功能
修改前:
修改,直接更改,再次表单提交给新的servlet
修改后
删除:
主要是练习servlet与jdbc操作。
首先创建了数据库和表的。
还有一些bug。要努力修改,而且并没有对传入的参数做过滤啊什么的。只是个简单的练习。
学习到了很多~很喜欢写代码。
相关文章推荐
- java中调用web中的jsp或servlet去通知它们做一些操作
- java-web分页操作(javaBean+Servlet+jsp)
- javaweb-servlet重定向的运行过程
- javaweb入门实例---servlet例子
- 如何在java代码中调用一个web项目jsp或者servlet
- Java Web应用快速开发平台OpenJWeb(v1.6)增删改查页面生成器操作手册
- javaweb框架之Hibernate3.6.0增删查该基本操作与Junit测试类
- 【Java.Web】Servlet —— 访问同一个Servlet容器中的其他Web应用
- Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作
- JavaWeb----2.Servlet编程操作
- 【JAVA】一个抓取Web图片的小例子
- javaweb之Session简单例子(两个页面一个存数据,一个取数据)和session的一些基本内容
- JavaWeb_Servlet_重定向和转发
- javaweb-servlet重定向与转发的区别及案例
- java中timer在web.xml中的一个例子
- 用新建scaffold的方法 创建一个带CRUD增删改查操作的 小WEB项目
- 一个WEB编码测试和讲解的servlet例子
- JavaWeb开发之Servlet中的线程问题及使用ServletConfig对象操作Servlet中的参数
- JavaWeb中如何自己创建一个servlet
- javaweb-day06-2&3 (Servlet - Response - 输出随机图片、请求重定向、web工程的URL地址写法、getOutputStream和getWriter互斥)