课程设计目的
- JSP网络程序开发设计,结合本专业物联网将平时练习和综合实践结合起来,要求掌握HTML+CSS+JavaScript学会制作站点规划与页面开发的方法
- 熟练掌握jsp、Bean、servlet编程,加深对jsp技术的理解与应用
- 学会分析设计一个较复杂的网络应用系统,增加网站建设与代码调试的实际经验
- 不过重要的一点是,基于模型-视图-控制器 模式(MVC)设计较为复杂的系统 PS(以上纯属吹#)
网站总体设计
系统软硬件环境需求
内存:32MB或者更高
硬盘空间: 2GB或以上软件环境
操作系统: Window XP/2000/Win7或以上
Web服务器: Tomcat6.0或以上版本
开发语言:JSP或Java(JDK1.7以上版本)
开发平台:MyEclipse
数据库:MySQL
客户端:IE6.0或以上版本功能模块实现
用户登录、用户管理、设备管理、数据记录
数据库设计
系统文件架构
前台模块代码实现
公共类的编写
数据库的连接与操作类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18import java.sql.Connection;
import java.sql.DriverManager;
public class ConnDb {
private Connection cn=null;
public Connection getcon(){
try {
String url="jdbc:mysql://localhost:3306/iotdb?useUnicode=true&characterEncoding=utf8";
Class.forName("com.mysql.jdbc.Driver");
String userName ="root";
String password="CaiJL";//注意根据机房的账号密码进行修改
cn =DriverManager.getConnection(url,userName,password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return cn;
}
}
Ps(记住得在WEB-INF/lib里面导入JDBC驱动程序库文件)
创建字符串处理类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20public class CodeExchange {
public static String chinese(String str){
if(str==null) str="";
try{
str=new String(str.getBytes("ISO-8859-1"),"utf-8");
}catch(Exception e){
str="";
e.printStackTrace();
}
return str;
}
public static String specilSymbol(String str){
str=str.replace("&", "&");
str=str.replace("<", "<");
str=str.replace(">", ">");
str=str.replace("'", """);
str=str.replace("\0x0d", "<br>");
return str;
}
}
系统后台模块代码实现
用户管理模快代码实现
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//有删除、添加和修改传递action参数
String action=request.getParameter("action");//通过传递action的参数值来决定执行哪个动作
if(action!=null){
if(action.equals("delete")){
String id=request.getParameter("id");
if(id!=null&&id.length()>0){
UserDao userDao=new UserDao();
if(userDao.delete(id)){
request.setAttribute("msg", "删除成功!");
}else{
request.setAttribute("msg", "删除失败!");
}
}else{
response.sendRedirect("error.jsp");//设计一个错误页面来显示
return;
}
}else if(action.equals("add")){
Tuser user=new Tuser();
user.setUsername(CodeExchange.chinese(request.getParameter("username")));
user.setPassword(CodeExchange.chinese(request.getParameter("password")));
user.setUsertype(CodeExchange.chinese(request.getParameter("usertype")));
UserDao userDao=new UserDao();
//这里还可以进一步查询用户名是否存在,避免用户名重复
if(userDao.add(user)){
request.setAttribute("msg", "添加成功!");
}else{
request.setAttribute("msg", "添加失败!");
}
}else if(action.equals("update")){
String id=request.getParameter("id");
if(id!=null&&id.length()>0){
UserDao userDao=new UserDao();
ArrayList<Tuser> users= userDao.query(" id=" + id);
if(users!=null && users.size()>0){
Tuser user=users.get(0);//获取用户信息
request.setAttribute("user", user);
//转向修改页面编辑信息
request.getRequestDispatcher("useredit.jsp").forward(request, response);
return;
}else{
response.sendRedirect("error.jsp");//设计一个错误页面来显示
return;
}
}else{
response.sendRedirect("error.jsp");//设计一个错误页面来显示
return;
}
}else if(action.equals("updateSave")){
Tuser user=new Tuser();
user.setUsername(CodeExchange.chinese(request.getParameter("username")));
user.setPassword(CodeExchange.chinese(request.getParameter("password")));
user.setUsertype(CodeExchange.chinese(request.getParameter("usertype")));
//这里还可以进一步校验id的合法性
user.setId(Long.parseLong(request.getParameter("id")));
UserDao userDao=new UserDao();
//这里还可以进一步查询用户名是否存在,避免用户名重复
if(userDao.update(user)){
request.setAttribute("msg", "修改成功!");
}else{
request.setAttribute("msg", "修改失败!");
}
}else if(action.equals("login")){
Tuser user=new Tuser();
user.setUsername(CodeExchange.chinese(request.getParameter("username")));
user.setPassword(CodeExchange.chinese(request.getParameter("password")));
UserDao userDao=new UserDao();
ArrayList<Tuser> users= userDao.query(" username='" + user.getUsername() +"' and password='"+user.getPassword()+"'");
if(users!=null && users.size()>0){
user=users.get(0);//获取用户信息
HttpSession session = request.getSession();
//用户登录信息存到session
session.setAttribute("loginusername", user.getUsername());
session.setAttribute("loginusertype", user.getUsertype());
//转向修改页面编辑信息
request.getRequestDispatcher("index.jsp").forward(request, response);
return;
}else{
request.setAttribute("msg", "登录失败!");
request.getRequestDispatcher("login.jsp").forward(request, response);
return;
}
}
else{
//不能识别动作
response.sendRedirect("error.jsp");//设计一个错误页面来显示
return;
}
}
//查询条件
String whereSQL="";
String keyword=CodeExchange.chinese(request.getParameter("keyword"));
String fieldname=request.getParameter("fieldname");
if(keyword!=null&&fieldname!=null&&fieldname.length()>0&&keyword.length()>0){
//id为整型
if(fieldname.equals("id")){
whereSQL=fieldname+"="+keyword;
}
//其他为字符串型,要加入单引号
else
{
whereSQL=fieldname+" like '%"+keyword+"%' ";
}
//回传给页面显示查询条件,否则会清空
request.setAttribute("fieldname", fieldname);
request.setAttribute("keyword", keyword);
}
//查询页码
String page=request.getParameter("page");
if(page==null){
page="1";
}
UserDao userDao=new UserDao();
ArrayList<Tuser> users =new ArrayList<Tuser>();
users = userDao.queryPage(whereSQL,Integer.parseInt(page));
request.setAttribute("users", users);
int total=userDao.count(whereSQL);
request.setAttribute("total", total/userDao.PAGE_LENGTH + 1);//计算总页数
request.setAttribute("currentPage", Integer.parseInt(page));
request.getRequestDispatcher("userlist.jsp").forward(request, response);
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
PS(只取核心代码)
系统测试与文档支持
最后
本次网页程序设计课程代码以及源码均在GitHub,欢迎指正!