JavaWeb JavaBean JSP MVC MySQL Tomcat JavaScript Bootstrap.
基础JSP+Servlet或JSP+SSM(Spring、SpringMVC、MyBatis)框架或JSP+SSM+Maven(pom.xml)框架或SpringBoot…均可
开发工具:eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
//@Override
public Good get(Serializable id) {
Good vo = null;
try {
Connection c = Util.getConnection();
Statement s = c.createStatement();
String sql = "select * from `t_good` where id = " + id;
ResultSet rs = s.executeQuery(sql);
if (rs.next()) {
vo = new Good();
vo.setId(rs.getLong("id"));
vo.setGoodName(rs.getString("good_name"));
vo.setGoodText(rs.getString("good_text"));
vo.setGoodJiage(rs.getString("good_jiage"));
vo.setGoodLeimu(rs.getString("good_leimu"));
}
rs.close();
ps.close();
c.close();
} catch (Exception e) {
e.printStackTrace();
}
Map<String, Object> result = new HashMap();
result.put("list", list);
result.put("totalCount", totalCount);
return result;
}
}
package com.demo.servlet;
import com.demo.util.Util;
import com.demo.service.UserService;
import com.demo.service.impl.UserServiceImpl;
import com.demo.vo.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
ps.setString(4, vo.getDinggouTel());
ps.setString(5, vo.getDinggouAdd());
ps.setString(6, vo.getDinggouZhifufangshi());
ps.setString(7, vo.getDinggouZhuangtai());
ps.setString(8, vo.getDinggouText());
ps.execute();
ps.close();
c.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//@Override
public void update(Dinggou vo) {
String sql = "update `t_dinggou` set `dinggou_name` = ? ,`dinggou_xiangqing` = ? ,`dinggou_shouhuo` = ? ,`dinggou_tel` = ? ,`dinggou_add` = ? ,`dinggou_zhifufangshi` = ? ,`dinggou_zhuangtai` = ? ,`dinggou_text` = ? where `id` = ?";
try {
Connection c = Util.getConnection();
PreparedStatement ps = c.prepareStatement(sql);
<th>用户名</th>
<th>姓名</th>
<th>性别</th>
<th>手机</th>
<th>备注</th>
<th>类型</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${list}" var="vo">
<tr class="index-content-table-td">
<td>${vo.username}</td>
<td>${vo.realName}</td>
<td>${vo.userSex}</td>
<td>${vo.userPhone}</td>
<td title="${vo.userText}">
<c:choose>
vo.setDinggouShouhuo(rs.getString("dinggou_shouhuo"));
vo.setDinggouTel(rs.getString("dinggou_tel"));
vo.setDinggouAdd(rs.getString("dinggou_add"));
vo.setDinggouZhifufangshi(rs.getString("dinggou_zhifufangshi"));
vo.setDinggouZhuangtai(rs.getString("dinggou_zhuangtai"));
vo.setDinggouText(rs.getString("dinggou_text"));
}
c.close();
} catch (Exception e) {
e.printStackTrace();
}
return vo;
}
//@Override
public Map<String, Object> list(Map<String, Object> params) {
List<Dinggou> list = new ArrayList();
int totalCount = 0;
GoodService goodService = new GoodServiceImpl();
//调用Service层更新方法(update),更新记录
goodService.update(vo);
this.redirectList(request, response);
} else if ("get".equalsIgnoreCase(action) || "editPre".equalsIgnoreCase(action)) {//根据主键ID,查询详情信息并跳转到详情页面或编辑页面
Serializable id = Util.decode(request, "id");//取出页面传入的主键,用于查询详情
GoodService goodService = new GoodServiceImpl();
Good vo = goodService.get(id);
request.getSession().setAttribute("vo", vo);
String to = "get".equalsIgnoreCase(action) ? "info" : "edit";//判断是去详情显示页面还是编辑页面
response.sendRedirect("good_" + to + ".jsp");
} else {//默认去列表页面
this.redirectList(request, response);
}
}
}
rs.close();
ps.close();
c.close();
} catch (Exception e) {
e.printStackTrace();
}
Map<String, Object> result = new HashMap();
result.put("list", list);
result.put("totalCount", totalCount);
return result;
}
}
package com.demo.servlet;
import com.demo.util.Util;
import com.demo.service.UserService;
import com.demo.service.impl.UserServiceImpl;
import com.demo.vo.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
}
}
//@Override
public boolean delete(long id) {
try {
Connection c = Util.getConnection();
Statement s = c.createStatement();
String sql = "delete from `t_notice` where id = " + id;
s.execute(sql);
s.close();
c.close();
return true;
validationCode.append(codeChar);
// 随机设置当前验证码字符的颜色
g.setColor(getRandomColor(10, 100));
// 在图形上输出验证码字符,x和y都是随机生成的
g.drawString(String.valueOf(codeChar), 16 * i + random.nextInt(7), height - random.nextInt(6));
}
HttpSession session = request.getSession();
session.setMaxInactiveInterval(5 * 60);
// 将验证码保存在session对象中,key为validation_code
session.setAttribute("validationCode", validationCode.toString());
g.dispose();// 关闭Graphics对象
OutputStream os = response.getOutputStream();
ImageIO.write(image, "JPEG", os);// 以JPEG格式向客户端发送图形验证码
} else if ("resetPassword".equalsIgnoreCase(action)) {
String msg;
User loginUser = (User) request.getSession().getAttribute("loginUser");
private static boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
return (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS);
}
/**
* 判断字符串是否是乱码
*
* @param strName
* @return
*/
public static boolean isMessyCode(String strName) {
java.util.regex.Pattern p = java.util.regex.Pattern.compile("\\s*|\t*|\r*|\n*");
java.util.regex.Matcher m = p.matcher(strName);
String after = m.replaceAll("");
String temp = after.replaceAll("\\p{P}", "");
char[] ch = temp.trim().toCharArray();
float chLength = 0;
float count = 0;
}
/**
* 处理Get请求
*
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
// 返回一个随机颜色(Color对象)
private Color getRandomColor(int minColor, int maxColor) {
Random random = new Random();
// 保存minColor最大不会超过255
if (minColor > 255)
minColor = 255;
// 保存minColor最大不会超过255
* @throws IOException
*/
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);//Get请求和Post请求的处理是一样的,所以把request、response转交给Post方法就好
}
/**
* 根据参数,查询出条例条件的记录集合,最后将数据返回给调用处或者将数据集合设置到session域里,再跳转到对应的列表页面
*
* @param request
* @param response
*/
try {
Connection c = Util.getConnection();
PreparedStatement ps = c.prepareStatement(sql);
ps.setString(1, vo.getUsername());
ps.setString(2, vo.getPassword());
ps.setString(3, vo.getRealName());
ps.setString(4, vo.getUserSex());
ps.setString(5, vo.getUserPhone());
ps.setString(6, vo.getUserText());
ps.setString(7, vo.getUserType());
ps.setLong(8, vo.getId());
return DriverManager.getConnection(DBURL, DBUSER, PASSWORD);
}
/**
* 测试连接是否成功
*
* @param args
* @throws Exception
*/
public static void main(String[] args) {
try {
Connection conn = Util.getConnection();
System.out.println("数据库连接成功!!!");
conn.close();
} catch (Exception e) {
e.printStackTrace();
import com.demo.util.Util;
import com.demo.service.GoodService;
import com.demo.service.impl.GoodServiceImpl;
import com.demo.vo.Good;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 商品模块的Servlet控制层,负责接收页面传过来的请求参数,根据action参数的值来确定页面要执行的具体操作<br>
* 而后再调用GoodService业务层的方法来处理具体的业务,最后将处理完成的结果返回或跳转至相应页面
*/
//@WebServlet("/GoodServlet")
String sqlList;
if (params.get("searchColumn") != null && !"".equals(params.get("searchColumn"))) {
condition += " and `" + params.get("searchColumn") + "` like '%" + params.get("keyword") + "%'";
}
try {
Connection c = Util.getConnection();
PreparedStatement ps;
ResultSet rs;
String limit = (params.get("startIndex") != null && params.get("pageSize") != null) ? " limit " + params.get("startIndex") + "," + params.get("pageSize") : "";
sqlList = "select * from `t_user` where 1=1 " + condition + " order by id asc " + limit + ";";
ps = c.prepareStatement(sqlList);
rs = ps.executeQuery();
while (rs.next()) {
User vo = new User();
vo.setId(rs.getLong("id"));
vo.setUsername(rs.getString("username"));
vo.setPassword(rs.getString("password"));
vo.setRealName(rs.getString("real_name"));
vo.setUserSex(rs.getString("user_sex"));
vo.setUserPhone(rs.getString("user_phone"));
vo.setUserText(rs.getString("user_text"));
vo.setUserType(rs.getString("user_type"));
<div class="index-content">
<div class="index-content-operation">
<a class="info-detail">订购管理</a>
<br>
<br>
</div>
<br>
<div class="index-content-operation">
<button class="btn btn-pill btn-grad btn-success btn-sm" <c:if test="${loginUser.userType != '管理员'}">disabled="disabled" title="没有权限!!!"</c:if> οnclick="window.location.href='dinggou_add.jsp'">添加</button>
<div class="index-content-operation-search"><input id="search_keyword" placeholder="商品" type="text" name="search_keyword"/><input type="hidden" id="searchColumn" name="searchColumn" value="dinggou_name"/><button class="btn btn-pill btn-grad btn-warning btn-sm" onclick="searchList()">搜索</button></div>
</div>
<br>
<table class="table table-striped table-hover table-bordered">
<thead>
<tr class="index-content-table-th">
<th>商品</th>
<th>商品详情</th>
<th>订购人</th>
<th>电话</th>
<th>地址</th>
<th>支付方式</th>
<th>状态</th>
</c:when>
<c:otherwise>
<c:out value="${vo.userText}"/>
</c:otherwise>
</c:choose>
</td>
<td>${vo.userType}</td>
<td>
<button class="btn btn-pill btn-grad btn-primary btn-sm" style="padding: 0px 1px;" onclick="window.location.href='UserServlet?action=get&id=${vo.id}'">详情</button>
<button class="btn btn-pill btn-grad btn-warning btn-sm" style="padding: 0px 1px;"
<c:if test="${loginUser.userType != '管理员' && vo.id != loginUser.id}">disabled="disabled" title="没有权限!!!"</c:if>
οnclick="window.location.href='UserServlet?action=editPre&id=${vo.id}'">编辑</button>
<button class="btn btn-pill btn-grad btn-default btn-sm" style="padding: 0px 1px;" <c:if test="${loginUser.userType != '管理员'}">disabled="disabled" title="没有权限!!!"</c:if> οnclick="if(window.confirm('将要删除:${vo.realName}?'))window.location.href='UserServlet?action=delete&id=${vo.id}'">删除</button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<div style="float: right;padding-right: 10px;color: #515151;"><jsp:include page="split.jsp"/></div>
</div>
c.close();
} catch (Exception e) {
e.printStackTrace();
}
return vo;
}
//@Override
public Map<String, Object> list(Map<String, Object> params) {
List<Notice> list = new ArrayList();
int totalCount = 0;
String condition = "";
String sqlList;
if (params.get("searchColumn") != null && !"".equals(params.get("searchColumn"))) {
condition += " and `" + params.get("searchColumn") + "` like '%" + params.get("keyword") + "%'";
}
try {
Connection c = Util.getConnection();
PreparedStatement ps;
ResultSet rs;
String limit = (params.get("startIndex") != null && params.get("pageSize") != null) ? " limit " + params.get("startIndex") + "," + params.get("pageSize") : "";
return false;
}
if (document.getElementById("dinggouTel").value.trim().length == 0) {
alert("电话不能为空!");
return false;
}
if (document.getElementById("dinggouAdd").value.trim().length == 0) {
alert("地址不能为空!");
return false;
}
return true;
<input type="hidden" id="id" name="id" value="${vo.id}"/>
<table class="index-content-table-add">
<tr>
<td width="12%">商品:</td><td><input class="index-content-table-td-add" type="text" id="dinggouName" name="dinggouName" value="${vo.dinggouName}"/></td>
</tr>
<tr>
<td width="12%">商品详情:</td><td><input class="index-content-table-td-add" type="text" id="dinggouXiangqing" name="dinggouXiangqing" value="${vo.dinggouXiangqing}"/></td>
</tr>
<tr>
<td width="12%">订购人:</td><td><input class="index-content-table-td-add" type="text" id="dinggouShouhuo" name="dinggouShouhuo" value="${vo.dinggouShouhuo}"/></td>
</tr>
<tr>
<td width="12%">电话:</td><td><input class="index-content-table-td-add" type="text" id="dinggouTel" name="dinggouTel" value="${vo.dinggouTel}"/></td>
//取出表要删除的订购记录的主键
long id = Long.parseLong(Util.decode(request, "id"));
DinggouService dinggouService = new DinggouServiceImpl();
//调用Service层删除方法(delete),将对应的记录删除
dinggouService.delete(id);
this.redirectList(request, response);
} else if ("edit".equals(action)) {//修改
//取出页面传进来的各个数据,并设置到Dinggou对象的属性里
Dinggou vo = new Dinggou();
vo.setId(Long.valueOf(Util.decode(request, "id")));
vo.setDinggouName(Util.decode(request, "dinggouName"));
vo.setDinggouXiangqing(Util.decode(request, "dinggouXiangqing"));
vo.setDinggouShouhuo(Util.decode(request, "dinggouShouhuo"));
vo.setDinggouTel(Util.decode(request, "dinggouTel"));
vo.setDinggouAdd(Util.decode(request, "dinggouAdd"));
vo.setDinggouZhifufangshi(Util.decode(request, "dinggouZhifufangshi"));
vo.setDinggouZhuangtai(Util.decode(request, "dinggouZhuangtai"));
vo.setDinggouText(Util.decode(request, "dinggouText"));
DinggouService dinggouService = new DinggouServiceImpl();
//调用Service层更新方法(update),更新记录
</div>
</body>
<script type="text/javascript">
//提交之前进行检查,如果return false,则不允许提交
function check() {
//根据ID获取值
if (document.getElementById("dinggouName").value.trim().length == 0) {
alert("商品不能为空!");
return false;
}
if (document.getElementById("dinggouXiangqing").value.trim().length == 0) {
alert("商品详情不能为空!");
return false;
}
if (document.getElementById("dinggouShouhuo").value.trim().length == 0) {
alert("订购人不能为空!");
try {
if (isMessyCode(str)) {
str = new String(str.getBytes("ISO-8859-1"), "UTF-8");
}
if (isMessyCode(str)) {
str = new String(str.getBytes("GB2312"), "UTF-8");
}
if (isMessyCode(str)) {
str = new String(str.getBytes("GBK"), "UTF-8");
}
if (isMessyCode(str)) {
str = new String(str.getBytes("UTF-8"), "ISO-8859-1");
}
if (isMessyCode(str)) {
str = new String(str.getBytes("GB2312"), "ISO-8859-1");
}
if (isMessyCode(str)) {
str = new String(str.getBytes("GBK"), "ISO-8859-1");
}
if (isMessyCode(str)) {
str = new String(str.getBytes("UTF-8"), "GB2312");
}
if (isMessyCode(str)) {
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 商品模块的Servlet控制层,负责接收页面传过来的请求参数,根据action参数的值来确定页面要执行的具体操作<br>
* 而后再调用GoodService业务层的方法来处理具体的业务,最后将处理完成的结果返回或跳转至相应页面
*/
//@WebServlet("/GoodServlet")
public class GoodServlet extends HttpServlet {
运行环境
Java≥6、Tomcat≥7.0、MySQL≥5.5
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
技术框架
JavaWeb JavaBean JSP MVC MySQL Tomcat JavaScript Bootstrap.
基础JSP+Servlet或JSP+SSM(Spring、SpringMVC、MyBatis)框架或JSP+SSM+Maven(pom.xml)框架或SpringBoot…均可
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
登录、注册、退出、用户模块、公告模块、订购模块、商品模块的增删改查管理
↖[获取源码方式]见左侧