package com.Web.Servlet.Persuit;
import com.Bean.Test;
import com.google.gson.Gson;
import com.Model.JsonModel;
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.PrintWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;
public abstract class CommonServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.setCharacterEncoding("utf-8"); //将功能转移到 CharacterFilter中完成
// Enumeration<String> headNames = request.getHeaderNames();
// String headName = "";
// while (headNames.hasMoreElements()) {
// headName = headNames.nextElement();
//
// if (headName.equals("User-Agent")) {
// String value = request.getHeader(headName);
// System.out.println("客户端系统类型:" + value);
// }
// }
// String ip = request.getRemoteAddr();
// System.out.println(ip);
// if (req.getHeader("referer") == null | "".equals(req.getHeader("referer"))) {
// resp.setContentType("text/html;charset=utf-8");
// PrintWriter pw = resp.getWriter();
// pw.println("此请求为非法请求");
// pw.flush();
// return;
// }
super.service(request, response);
}
protected void writeJson(JsonModel jm, HttpServletResponse response) throws IOException {
response.setContentType("application/json;charset=utf-8");
PrintWriter pw = response.getWriter();
Gson gson = new Gson();
String StringJson = gson.toJson(jm);
pw.println(StringJson);
pw.flush();
}
protected void writeJson(Test jm, HttpServletResponse response) throws IOException {
response.setContentType("application/json;charset=utf-8");
PrintWriter pw = response.getWriter();
Gson gson = new Gson();
String StringJson = gson.toJson(jm);
pw.println(StringJson);
pw.flush();
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String op = request.getParameter("op");
Method[] mm = this.getClass().getDeclaredMethods();
Method m = null;
try {
m = this.getClass().getDeclaredMethod(op,HttpServletRequest.class,HttpServletResponse.class);
if (m == null) {
out404("资源地址:" + op, response);
} else {
m.invoke(this, request, response);
}
} catch (Exception e) {
e.printStackTrace();
out500(e.getMessage(), response);
}
}
protected void out500(String message, HttpServletResponse response) throws IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.println("服务器内部错误 500:<b>");
pw.println(message);
pw.println("</b>");
pw.flush();
}
protected void out404(String message, HttpServletResponse response) throws IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter pw = response.getWriter();
pw.println("查无此资源,错误编码404:<b>");
pw.println(message);
pw.println("</b>");
pw.flush();
}
//protected 这个功能它的子类可以直接用,其他类不能用
/**
* 将一个 Request转为 T 对象
*/
protected <T> T parseRequestToT(HttpServletRequest request, Class<T> cls) throws IllegalAccessException, InstantiationException, InvocationTargetException {
//1.通过class字节码创建一个对象 T
T obj = cls.newInstance();
//2.从request中取出所有的属性,存到这个 obj中
Map<String, String[]> map = request.getParameterMap();
//3.取出cls中所有的属性,看有几个与map中的键相同,相同,则调用cls中的set方法,注入值
Method[] ms = cls.getMethods();
for (Method m : ms) {
if (m.getName().startsWith("set")) {
//这个m是一个setXXX(),取出XXX是什么,根据XXX,在map.get(XXX)取出这个值
String fieldName = getFieldName(m);
String[] values = map.get(fieldName);
String v = null;
if (values != null) {
if (values.length > 1) {
StringBuffer sb = new StringBuffer();
for (String s : values) {
sb.append(s + ",");
}
v = sb.toString();
} else {
v = values[0];
}
}
if (v == null) {
continue;
}
//判断这个 m方法的参数的类型,然后将 V 进行类型转换···
String methodParameterTypeName = m.getParameterTypes()[0].getTypeName();
if ("java.lang.Integer".equals(methodParameterTypeName)) {
Integer va = Integer.parseInt(v);
//然后再调用setXXX(),将值注入
m.invoke(obj, va);
} else if ("java.lang.Double".equals(methodParameterTypeName)) {
Double va = Double.parseDouble(v);
//然后再调用setXXX(),将值注入
m.invoke(obj, va);
} else if ("java.lang.Float".equals(methodParameterTypeName)) {
Float va = Float.parseFloat(v);
//然后再调用setXXX(),将值注入
m.invoke(obj, va);
} else if ("java.lang.Long".equals(methodParameterTypeName)) {
Long va = Long.parseLong(v);
//然后再调用setXXX(),将值注入
m.invoke(obj, va);
} else {
m.invoke(obj, v);
}
}
}
return obj;
}
private String getFieldName(Method setMethod) {
String fieldName = setMethod.getName().substring("set".length());
//将这个fieldNamed首字母改小写
fieldName = fieldName.substring(0, 1).toLowerCase() + fieldName.substring(1);
return fieldName;
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于JavaScript的餐厅点菜系统设计源码
共2000个文件
png:1492个
js:265个
jpg:96个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 194 浏览量
2024-09-25
20:11:23
上传
评论
收藏 17.79MB ZIP 举报
温馨提示
该餐厅点菜系统源码采用JavaScript为核心技术,集成了HTML, CSS, Java和XML等多种语言,包含2256个文件。具体包括1710个PNG图片文件、265个JavaScript文件、98个JPG图片文件、52个Java文件、47个GIF动画文件、36个CSS样式文件、31个HTML页面文件、6个Markdown文件、3个XML文件和2个文本文件。该系统专注于提供便捷的点菜体验,适用于各种规模的餐饮场所。
资源推荐
资源详情
资源评论
收起资源包目录
基于JavaScript的餐厅点菜系统设计源码 (2000个子文件)
icon.css 133KB
basic.css 75KB
easyui.css 74KB
editor_ie8.css 48KB
editor_iequirks.css 48KB
editor_ie.css 48KB
editor_gecko.css 47KB
editor.css 47KB
easyui.css 45KB
dialog_ie8.css 15KB
dialog_iequirks.css 14KB
dialog_ie.css 14KB
dialog.css 13KB
pay1.css 8KB
pay.css 7KB
index.css 6KB
detail.css 4KB
register.css 3KB
header.css 3KB
contents.css 3KB
cart.css 3KB
login.css 3KB
icon.css 2KB
wu.css 2KB
order.css 2KB
templates.css 1KB
copyformatting.css 1KB
wsc.css 1KB
toolbar.css 1KB
wsc.css 1KB
tableselection.css 1KB
colordialog.css 772B
footer.css 414B
dialog.css 396B
demo.css 365B
scayt.css 356B
ggs_index.gif 13KB
dangdang1.gif 5KB
dangdang1.gif 5KB
loading.gif 3KB
ww_sorry.gif 2KB
inloding.gif 2KB
loading.gif 2KB
download.gif 1KB
expand-all.gif 1009B
collapse-all.gif 983B
chk_checked.gif 881B
chk_unchecked.gif 855B
edit.gif 334B
delete.gif 87B
blank.gif 43B
blank.gif 43B
pay.html 20KB
shop.html 19KB
index.html 15KB
cart.html 14KB
updateM.html 14KB
register.html 14KB
active.html 13KB
goods.html 13KB
detail.html 11KB
history.html 10KB
order.html 9KB
index.html 9KB
alipay.html 8KB
types.html 7KB
member.html 6KB
reg.html 6KB
login.html 5KB
order.html 5KB
userinfo.html 3KB
member.html 3KB
user.html 2KB
detail.html 2KB
login.html 2KB
tmpFrameset.html 2KB
report.html 2KB
ciframe.html 2KB
sreport.html 2KB
test.html 1KB
admin.html 629B
welcome.html 282B
preview.html 246B
CommonServlet.java 7KB
DBHelper.java 7KB
Verify.java 6KB
OrderBiz.java 5KB
AdminServlet.java 5KB
HistoryServlet.java 4KB
TypeServlet.java 4KB
AlipayConfig.java 3KB
CartServlet.java 3KB
Orderinfo.java 3KB
MemberServlet.java 3KB
RegServlet.java 3KB
PayServlet.java 3KB
ShopServlet.java 3KB
MemberServlet.java 3KB
MemberBiz.java 3KB
DetailServlet.java 3KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
wjs2024
- 粉丝: 2317
- 资源: 5457
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- sensors-18-03721.pdf
- Facebook.apk
- 推荐一款JTools的call-this-method插件
- json的合法基色来自红包东i请各位
- 项目采用YOLO V4算法模型进行目标检测,使用Deep SORT目标跟踪算法 .zip
- 针对实时视频流和静态图像实现的对象检测和跟踪算法 .zip
- 部署 yolox 算法使用 deepstream.zip
- 基于webmagic、springboot和mybatis的MagicToe Java爬虫设计源码
- 通过实时流协议 (RTSP) 使用 Yolo、OpenCV 和 Python 进行深度学习的对象检测.zip
- 基于Python和HTML的tb商品列表查询分析设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功