今天终于是把java网页开发的基本东西都学完了,了解了java的基本操作。感觉java的环境还是很好的,有许多jar包可以使用,这样子就可以快速开发一个模块功能出来了。

这次我是自己写了一个从后台提取数据然后进行增删改查的操作。还有分页等功能。如下图:

这些数据都是直接从数据库直接提取出来的。这里的话,使用了三层架构的模式,将功能不同的层划分出来,这里用dao,service,servlet这三个,然后dao是负责与数据库打交道的,service是与服务器层打交道的,然后servlet的话是用来将界面与服务器端连接起来的。分完工后就可以开始做了。

划分的结构图如下:

这里面只讲解一下servlet的知识,毕竟其它的我在上次的几个文章有提及过这里就不详细说明了。

BaseServlet:

package com.d.cn.servlet;import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;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;public class BaseServlet extends HttpServlet {@Overridepublic void service(ServletRequest request, ServletResponse response)throws ServletException, IOException {//服务器乱码request.setCharacterEncoding("utf-8");//客户端乱码response.setCharacterEncoding("utf-8");//响应到客户端头部乱码response.setContentType("text/html;charset=utf-8");String action = request.getParameter("action");if(action==null || "".equals(action.trim())){System.out.println("feifa");return;}Method method;try {method = this.getClass().getMethod(action, HttpServletRequest.class,HttpServletResponse.class);method.invoke(this, request,response);} catch (NoSuchMethodException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

这里采用的是反射机制,所以这里的函数调用可以直接在继承类里面写,然后这个父类自动帮你加载这些函数执行,这样子就可以在url获取到ac函数,就直接进去ac函数执行了,简化了操作。

UserServlet:

package com.d.cn.servlet;import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.util.List;
import java.util.UUID;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;import com.d.cn.dao.entity.User;
import com.d.cn.dao.impl.UserDaoImpl;
import com.d.cn.service.impl.UserServiceImpl;
import com.d.cn.utils.Page;public class UserServlet extends BaseServlet{UserServiceImpl userServiceImpl = new UserServiceImpl();public void login(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{//1.收集数据String username = (String) request.getParameter("username");String password = (String) request.getParameter("password");//2.封装数据User user = new User();user.setName(username);user.setPassword(password);//3.调用API层User resultUser = userServiceImpl.getUserMsg(user);List<User> lUsers = userServiceImpl.listAll();//4.控制跳转HttpSession session = request.getSession();PrintWriter out = response.getWriter();if(resultUser!=null){session.setAttribute("username", username);session.setAttribute("ListAll", lUsers);request.getRequestDispatcher("welcome.jsp").forward(request, response);}else{out.println("<script type='text/javascript'>");out.println("alert('密码或账号错误!');");out.println("window.location.href='login.jsp';");out.println("</script>");}}public void add(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{String id = null;String username = null;String sex = null;String password = null;String address = null;String picturePath = null;User user = new User();//请求信息中的内容是否是multipart类型boolean isMultipart = ServletFileUpload.isMultipartContent(request);//上传文件的存储路径(服务器文件系统上的绝对文件路径)String uploadFilePath = request.getSession().getServletContext().getRealPath("upload/" );System.out.println(uploadFilePath);if (isMultipart) {FileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);try {//解析form表单中所有文件List<FileItem> items = upload.parseRequest(request);for (FileItem fileItem : items) {if(fileItem.isFormField()){//普通表单字段String fieldName = fileItem.getFieldName();   //表单字段的name属性值if("name".equals(fieldName)){username = fileItem.getString("UTF-8");}if("sex".equals(fieldName)){sex = fileItem.getString("UTF-8");}if("password".equals(fieldName)){password = fileItem.getString("UTF-8");}if("address".equals(fieldName)){address = fileItem.getString("UTF-8");}if("id".equals(fieldName)){id = fileItem.getString("UTF-8");}}else{//文件表单字段String fileName = fileItem.getName();String extendName = fileName.substring(fileName.lastIndexOf('.'), fileName.length());String onlyOneName = UUID.randomUUID().toString();picturePath = onlyOneName+extendName;System.out.println(uploadFilePath+"\\"+picturePath);File saveFile = new File("D:\\JavaWork\\newPoj\\upload\\"+picturePath);fileItem.write(saveFile);}}} catch (Exception e) {e.printStackTrace();}}user.setId(Integer.parseInt(id));user.setName(username);user.setSex(sex);user.setPassword(password);user.setAddress(address);user.setPicturePath(picturePath);int row = -1;row = userServiceImpl.insert(user);if(row>0){response.sendRedirect("UserServlet?action=page");}}public void upd(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{String id = request.getParameter("id");User user = new User();if(id!=null){user.setId(Integer.parseInt(id));}user.setName(request.getParameter("username"));user.setSex(request.getParameter("sex"));user.setPassword(request.getParameter("password"));user.setAddress(request.getParameter("address"));user.setPicturePath(request.getParameter("picturePath"));int row = -1;row = userServiceImpl.update(user);if(row>0){response.sendRedirect("UserServlet?action=page");}}public void del(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{String id = request.getParameter("id");User user = new User();if(id!=null){user.setId(Integer.parseInt(id));}user.setName(request.getParameter("username"));user.setSex(request.getParameter("sex"));user.setPassword(request.getParameter("password"));user.setAddress(request.getParameter("address"));user.setPicturePath(request.getParameter("picturePath"));int row = -1;row = userServiceImpl.delete(user);if(row>0){response.sendRedirect("UserServlet?action=page");}}public List<User> listAll(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{return userServiceImpl.listAll();}public void page(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
UserDaoImpl userDaoImpl = new UserDaoImpl();String currentPageStr = request.getParameter("currentPage");if(currentPageStr==null){currentPageStr = "1";}int currentPage = Integer.parseInt(currentPageStr);int pageSize = 3;Page<User> page = userDaoImpl.getPage(currentPage,pageSize);HttpSession session = request.getSession();session.setAttribute("page", page);response.sendRedirect("welcome.jsp");}
}

在这里我写了一个文件上传的功能,这里的路径采用的是静态的,但是文件的名是采用唯一名字的方法生成的,这样子在上传的时候就不会出现重复的错误了。

整个工程:传送门

jsp+servlet的增删改查页面相关推荐

  1. jsp+servlet+mysql增删改查

    用的IntelliJ IDEA开发的,jdk1.8 1 首先是项目结构,如下图所示 2看各层的代码 首先是web.xml <?xml version="1.0" encodi ...

  2. Django学习笔记(10)——Book单表的增删改查页面

    一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...

  3. 基于JSP的数据库增删改查实现

    基于JSP的数据库增删改查实现 一.JAVA包的设计 包 类 方法 entity PM25 Set,get dao BaseDao getConnection,close PM25Dao findAl ...

  4. 用servlet和jsp和JDBC以及前端知识做登录功能和增删改查页面

    上面这三个图是创建的包名情况,下面的图片是实现后的内容 ![这个是主页面下面有超链接](https://img-blog.csdnimg.cn/20190411190211894.png?x-oss- ...

  5. 微软Connect教程系列--自动生成增删改查页面工具介绍(二)

    本章课程描述了vs2015的三个特点,其中主要将描述在vs2015下面,使用命令自动生成增删改查界面,具体如下: 1.web.config文件不在存在,用config.json替代,以适应支撑vs的插 ...

  6. 通过Element开发基础增删改查页面——Vue项目实战(三)

    一.Tab标签页设置 tab标签引入 <div><el-tabs v-model="activeName" type="card">&l ...

  7. JavaWeb 基于jsp+javabean+servlet+mongodb 增删改查

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  8. jsp jdbc mysql增删改查_使用JSP+SERVLET+JDBC实现对数据库的增删改查(详细)

    专业 response.setCharacterEncoding("UTF-8"); request.setCharacterEncoding("UTF-8") ...

  9. 微信小程序入门 ——增删改查+页面跳转+传值取值+布局样式

    2019独角兽企业重金招聘Python工程师标准>>> **目标场景 **分类管理 技术点 读取分类列表 点击某分类进入编辑页,操作编辑与删除 点击列表页底部按钮,跳转添加,共用编辑 ...

最新文章

  1. 在Spring中采用声明式方法对Hibernate和JDBC进行统一的事务配置(AOP)
  2. win10 无法打开 APICloud Studio 2 的解决方案
  3. Hadoop集群(第6期)_WordCount运行详解
  4. spring分布式事务学习笔记(2)
  5. HDU5763 Another Meaning(KMP+dp)
  6. (65)SPI外设驱动用户接收模块(四)(第13天)
  7. 24模块-push【管理推送消息功能】
  8. java sql注入 过滤器_java 过滤器filter防sql注入 | 学步园
  9. 都觉得自己亏了,那谁赚了——评英国脱欧与俄白统一
  10. MATLAB人脸识别算法
  11. 在matlab中使用模糊编辑器实现模糊控制器的设计详解
  12. Python随机生成姓名+电话号码+邮箱
  13. dcp-9020cdn复印位置有_兄弟DCP-9020CDN打印机驱动下载
  14. 无需Apple ID和密码即可将iPad恢复出厂设置的简便方法
  15. Python中的sys.argv是什么含义
  16. php工程师具备技能,PHP工程师具备的技能及素质
  17. 成立126年的通用电气GE投资区块链网络安全初创公司
  18. 支持向量机 实战电信运营商 -客户流失预警
  19. 初学Singleton单例模式
  20. 对G1垃圾回收器的理解

热门文章

  1. 公务员考试——判断(一)
  2. MySQL零基础从入门到精通(函数篇)
  3. Amazon原创剧集《Regular Heroes》将于5月8日首播,讲述COVID-19抗疫前线的英雄事迹
  4. 高级Linux SA需要会做的事情
  5. 所谓的全球变暖就是一桩权力导演的学术丑闻
  6. keras中的early stopping
  7. HTML - 浅谈DIV盒子居中
  8. 从键盘接收一百分制成绩( 0~100),要求输出其对应的成绩等级 A~E。其中,90 分以上为'A',80~89 分为'B', 70~79分为'C', 60~69分为'D', 60 分以下为'E'。
  9. OSChina 周三乱弹 —— 写得了代码,查得出异常
  10. SAP HUM 如何拆分一个HU?