MyShop-不用框架实现的基础javaweb项目
作者:互联网
了解了java基础之后来个项目练练手
既然是自己练手,就不需要什么需求分析,设计,直接从模仿开始,就拿淘宝为例子吧
找一个前端模板,一大群html,这里就不自己写了,自己写的没有模板的美观
数据库设计
来一个最基础的用户表
drop table if exists `myshop_user`; create table `myshop_user`( USER_ID varchar(32) not null, USER_NAME varchar(20) not null, USER_PASSWORD varchar(20) not null, USER_SEX varchar(1) not null, USER_BIRTHDAY datetime default null, USER_IDENITY_CODE varchar(60) default null, USER_EMAIL varchar(60) default null, USER_MOBLLE varchar(11) default null, USER_ADDRESS varchar(200) not null, USER_STATUS decimal(6,0) not null, primary key(`USER_ID`) )ENGINE=InnoDB default charset=utf8;
如果只是普通的日期那就太简单了,想弄成当前时间
遇到的问题是mysql5.x居然不支持data datatime类型设置系统默认值即当前时间,
USER_BIRTHDAY datetime default null,
一开始我想设置USER_BRITHDAY的日期类型设置为当前时间为其默认值?
写的 USER_BRITHDAY datetime default now(),报错
想用当前时间,默认系统的值,只能 timestamp 类型,且 默认值设为 now() 或 current_timestamp()
如下
就可以这样
USER_BIRTHDAY timestamp NULL default CURRENT_TIMESTAMP
就可以系统创建用户的注册时间。
不过最后我为了偷懒没有用系统的默认时间即设置系统默认值,而是用的一个datetime
-------------------------------------------------------------------
有了数据库,就需要创建数据库对应的实体类(即entity)
package com.yang.entity; public class myshop_user { private String USER_ID; private String USER_NAME; private String USER_PASSWORD; private String USER_SEX; private String USER_BIRTHDAY; private String USER_IDENITY_CODE; private String USER_EMAIL; private String USER_MOBLLE; private String USER_ADDRESS; private int USER_STATUS; }
然后就是构造函数,set get就行,利用快捷键
------------------------------------------------------------
再写一个对应的增加用户的jsp,效果如图
主要就是form tr td input这些html知识,比较简单,但是过程麻烦,
admin_useradd.jsp
里面的class引入的css是都用的模板里的,直接引用即可,这也是前端模板的好处,好看。直接用,当然也可以不需要这些css
其他没啥大问题,主要是如果有特殊需求,需要上传文件的话需要enctype
<form enctype="multipart/form-data">
--------------------------------------------------------------
既然上面的表单都提交了跳转请求,那就写跳转请求servlet,
记住maven是javax.servlet不是tomcat.servlet那个maven,导错就会写不出servlet
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> </dependency>View Code
并且!需要注解的话得版本高一点如@WebServlet低版本不行
因为表单是post提交过来,那也只需要重写doPost即可
这里面.避免乱码就是设置字符集(就像重新打碎重组)
先把请求过来的设置:request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码的编码。
再设置响应的字符集:Content-Type用于定义网络文件的类型和网页的编码,决定浏览zhidao器将以什么形式、什么编码读取这个文件
package com.yang.servlet.user; import com.yang.entity.myshop_user; 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 java.io.IOException; import java.io.PrintWriter; //@WebServlet("/manage/admin_douseradd") public class DoUserAdd extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置请求字符集 req.setCharacterEncoding("UTF-8"); //设置响应字符集 resp.setContentType("text/html"); String username = req.getParameter("username"); String name = req.getParameter("name"); String password = req.getParameter("password"); String sex = req.getParameter("sex"); String birthday = req.getParameter("birthday"); String email = req.getParameter("email"); String mobile = req.getParameter("mobile"); String adress = req.getParameter("adress"); //创建一个实体 myshop_user u = new myshop_user(username,name,password,sex,birthday,null,email,mobile,adress,1); //放进数据库 System.out.println(u); //成功或失败重定向到哪去 if(true) { resp.sendRedirect("admin_user.jsp"); } else { //输出流,通过这个方法获取到打印流 PrintWriter out = resp.getWriter(); //js输出 out.write("<script>"); out.write("alert('用户添加失败')"); out.write("location.href='manage/admin_useradd.jsp'"); out.write("</script>"); } } }View Code
----------------------(第一天)分界线----------------------------------
标签:String,框架,req,private,MyShop,USER,null,servlet,javaweb 来源: https://www.cnblogs.com/yangj-Blog/p/12984845.html