软件工程概论课后作业01

1. 网站系统开发需要掌握的技术

①java语言

Java语言体系比较庞大,包括多个模块。从WEB项目应用角度讲有JSP,Servlet,JDBC,JavaBean(Application)四部分技术。JDBC可做三件事情:与数据库建立连接,发送SQL语句,处理结果。Servlet从客户端(通过WEB服务器)接受请求,执行某种操作,然后返回结果。JSP是从Servlet上分离出来的一小部分,简化了开发,加强了页面设计。JavaBean能提供常用功能并且可以重复使用,这使得开发人员可以把某些关键功能和核心算法提取出来封装成为一个组件对象,这样就增加了代码的重用率和系统的安全性。

②面向对象分析设计思想

Java语言是完全面向对象的语言,所以在项目设计时会有很大的帮助,在设计时应尽量舍弃以往的面向过程的设计方式。

③设计模式和构架结构

设计模式在java项目实施过程更是重中之重。主要在与两层的设计模式,三层的设计模式和N层的设计模式。它直接决定着项目的应用,部署和实际开发设计。

④XML语言

在服务器和设计模式结构中会应用到自定义文件,而且在应用高级设计时也会定义自用的标签,现在流行的是用XML去定义配置,所以XML语言应该有一定掌握。XML大致可以分为3类,分别是简单数据的表示和交换,面向消息的计算,用户界面相关。

⑤网页脚本语言

网页脚本语言的执行都是在客户端执行的,速度很快,并且大多数的操作与服务器没有交互计算,所以在一些应用中非常理想。在设计WEB项目的应用中,网页的脚本语言起着不能忽视的作用,对JAVAScript应有一定的了解。

⑥开发工具

数据库,Web服务器,集成开发环境

2.源代码

package com.jaovo.msg.dao;
import java.util.List;
import com.jaovo.msg.model.User;
public interface IUserDao {public void add(User user);public void delete(int id);public void update(User user);public User load(int id);public User load(String username);public List<User> load();
}
package com.jaovo.msg.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.jaovo.msg.Util.DBUtil;
import com.jaovo.msg.Util.UserException;
import com.jaovo.msg.model.User;import sun.net.www.content.text.plain;public class UserDaoImpl implements IUserDao {@Overridepublic void add(User user) {//获得链接对象Connection connection = DBUtil.getConnection();//准备sql语句String sql = "select count(*) from t_user where username = ?";//创建语句传输对象PreparedStatement preparedStatement = null;ResultSet resultSet = null;try {preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1, user.getUsername());//接收结果集resultSet = preparedStatement.executeQuery();//遍历结果集while(resultSet.next()) {if (resultSet.getInt(1) > 0) {throw new UserException("用户已存在") ;}}sql = "insert into t_user(username,password,nickname) value (?,?,?)";preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1, user.getUsername());preparedStatement.setString(2, user.getPassword());preparedStatement.setString(3, user.getNickname());preparedStatement.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}finally {//关闭资源
            DBUtil.close(resultSet);DBUtil.close(preparedStatement);DBUtil.close(connection);}}@Overridepublic void delete(int id) {Connection connection = DBUtil.getConnection();String sql = "delete from t_user where id = ?";PreparedStatement preparedStatement = null;try {preparedStatement = connection.prepareStatement(sql);preparedStatement.setInt(1, id);preparedStatement.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}finally {DBUtil.close(preparedStatement);DBUtil.close(connection);}}@Overridepublic void update(User user) {Connection connection = DBUtil.getConnection();//准备sql语句String sql = "update t_user set password = ? , nickname=? where id = ?";//创建语句传输对象PreparedStatement preparedStatement = null;try {preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1, user.getPassword());preparedStatement.setString(2, user.getNickname());preparedStatement.setInt(3, user.getId());preparedStatement.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}finally {DBUtil.close(preparedStatement);DBUtil.close(connection);}}@Overridepublic User load(int id) {Connection connection = DBUtil.getConnection();//准备sql语句String sql = "select * from t_user  where id = ?";//创建语句传输对象PreparedStatement preparedStatement = null;ResultSet resultSet = null;User user = null;try {preparedStatement = connection.prepareStatement(sql);preparedStatement.setInt(1, id);resultSet = preparedStatement.executeQuery();while(resultSet.next()) {user = new User();user.setId(id);user.setUsername(resultSet.getString("username"));user.setPassword(resultSet.getString("password"));user.setNickname(resultSet.getString("nickname"));}} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}finally {DBUtil.close(resultSet);DBUtil.close(preparedStatement);DBUtil.close(connection);}return  user;}@Overridepublic User load(String username) {// TODO Auto-generated method stubreturn null;}@Overridepublic List<User> load() {Connection connection = DBUtil.getConnection();//准备sql语句String sql = "select * from t_user ";//创建语句传输对象PreparedStatement preparedStatement = null;ResultSet resultSet = null;//集合中只能放入user对象List<User> users = new ArrayList<User>();User user = null;try {preparedStatement = connection.prepareStatement(sql);resultSet = preparedStatement.executeQuery();while(resultSet.next()) {user = new User();user.setId(resultSet.getInt("id"));user.setUsername(resultSet.getString("username"));user.setPassword(resultSet.getString("password"));user.setNickname(resultSet.getString("nickname"));users.add(user);}} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}finally {DBUtil.close(resultSet);DBUtil.close(preparedStatement);DBUtil.close(connection);}return  users;}}
package com.jaovo.msg.model;public class User {private int id;private String  username;private String  nickname;private String  password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
package com.jaovo.msg.Util;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;public class DBUtil {public  static  Connection getConnection() {try {//1 加载驱动Class.forName("com.mysql.jdbc.Driver").newInstance();} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {// TODO Auto-generated catch block
            e.printStackTrace();}String user = "root";String password = "root";String url = "jdbc:mysql://localhost:3306/jaovo_msg";Connection connection = null;try {//2 创建链接对象connectionconnection = DriverManager.getConnection(url,user,password);} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}return connection;}//关闭资源的方法public static void close(Connection connection ) {try {if (connection != null) {connection.close();}} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}public static void close(PreparedStatement preparedStatement ) {try {if (preparedStatement != null) {preparedStatement.close();}} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}public static void close(ResultSet resultSet ) {try {if (resultSet != null) {resultSet.close();}} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}}
package com.jaovo.msg.Util;public class UserException extends RuntimeException{public UserException() {super();// TODO Auto-generated constructor stub
    }public UserException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);// TODO Auto-generated constructor stub
    }public UserException(String message, Throwable cause) {super(message, cause);// TODO Auto-generated constructor stub
    }public UserException(String message) {super(message);// TODO Auto-generated constructor stub
    }public UserException(Throwable cause) {super(cause);// TODO Auto-generated constructor stub
    }}
<%@page import="com.jaovo.msg.Util.UserException"%>
<%@page import="com.jaovo.msg.dao.UserDaoImpl"%>
<%@page import="com.jaovo.msg.model.User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%//接收客户端传递过来的参数String username = request.getParameter("username");String password = request.getParameter("password");String nickname = request.getParameter("nickname");if(username == null || "".equals(username.trim())){request.setAttribute("error", "用户名不能为空");%><jsp:forward page="addInput.jsp"></jsp:forward>
<%}User user = new User();user.setUsername(username);user.setPassword(password);user.setNickname(nickname);UserDaoImpl userDao = new UserDaoImpl();try{userDao.add(user);//重定向response.sendRedirect("list.jsp");
%><%}catch(UserException e){
%><h2 style="color:red ; font-size:50px">发生错误 : <%=e.getMessage() %></h2><%}%>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>用户添加页面</title>
</head>
<body><%=request.getAttribute("error") %><form action="add.jsp" method="get"><table align="center" border="1" width="500"><tr><td>用户名称 : </td><td><input type="text" name="username" /></td></tr><tr><td>用户密码:</td><td><input type="password" name="password" /></td></tr><tr><td>用户昵称:</td><td><input type="text" name="nickname" /></td></tr><tr align="center"><td colspan="2"><input type="submit" value="提交" /><input type="reset" value="重置" /></td></tr></table></form>
</body>
</html>

3.运行结果截图

 

 4.列出你对这门课的希望和自己的目标,并具体列出你计划计划每周花多长时间在这门课上。

 可以自己开发系统,创建登录界面。

计划除了能够在规定时间内完成作业,课下也应该要花费很多时间多用于编程上面。计划每周花费28个多小时用于编程。

转载于:https://www.cnblogs.com/lijing925/p/7876039.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/428538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 参数bug_MySQL 的这个 BUG,坑了多少人?

作者&#xff1a;腾讯数据库技术来源&#xff1a;cloud.tencent.com/developer/article/1367681▌问题描述近期&#xff0c;线上有个重要Mysql客户的表在从5.6升级到5.7后&#xff0c;master上插入过程中出现"Duplicate key"的错误&#xff0c;而且是在主备及RO实例上…

i9 9900k mysql_i9-9900K和9900KS有什么区别?i9-9900KS和i9-9900K区别对比评测

众所周知&#xff0c;i9-9900KF相当于i9-9900K去除核显的版本&#xff0c;其它参考保持一致&#xff0c;所以在性能上也是相同的。不过在近期&#xff0c;intel牌牙膏厂再一次发布了一款九代酷睿i9-9900KS特别版&#xff0c;从产品型号S后缀上来看&#xff0c;确实有点类似于NV…

Memory及其controller芯片整体测试方案(上篇)

如果你最近想买手机&#xff0c;没准儿你一看价格会被吓到手机什么时候偷偷涨价啦&#xff01; 其实对于手机涨价&#xff0c;手机制造商也是有苦难言&#xff0c;其中一个显著的原因是存储器芯片价格的上涨↗↗↗ >>> 存储器memory的江湖地位 存储器memory&#xff0…

BootStrapJS——modal弹出框

学习参考视频https://ninghao.net/video/1615 1.对话框 - Modal 需要bootstrap的CSS文件引入&#xff0c;以及jQuery的js包 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>弹窗测试&…

mysql.ini环境配置_MySQL配置文件mysql.ini参数详解

my.ini(Linux系统下是my.cnf)&#xff0c;当mysql服务器启动时它会读取这个文件&#xff0c;设置相关的运行环境参数。my.ini分为两块&#xff1a;Client Section和Server Section。Client Section用来配置MySQL客户端参数。要查看配置参数可以用下面的命令&#xff1a;show va…

mysql数据备份在哪里_mysql之数据备份与恢复

本文内容&#xff1a; 复制文件法利用mysqldump利用select into outfile其它(列举但不介绍)首发日期&#xff1a;2018-04-19有些时候&#xff0c;在备份之前要先做flush tables &#xff0c;确保所有数据都被写入到磁盘中。复制文件法&#xff1a;对于myisam存储引擎的数据库&a…

python opencv 边缘检测_Python使用Opencv实现边缘检测以及轮廓检测的实现

边缘检测Canny边缘检测器是一种被广泛使用的算法&#xff0c;并被认为是边缘检测最优的算法&#xff0c;该方法使用了比高斯差分算法更复杂的技巧&#xff0c;如多向灰度梯度和滞后阈值化。Canny边缘检测器算法基本步骤&#xff1a;平滑图像&#xff1a;通过使用合适的模糊半径…

web程序入门五(http无状态)

Asp.net中的状态保持方案&#xff1a; ViewState&#xff1a;是donet特有的 微软提供的对象来完成状态保持 ViewState["key1"] 11; 赋值 键值对 形式 object类型 ViewState["key1"] 直接取值&#xff0c;将其转化成相应的类型 原理&#xff1a;本质…

互评Beta版本(Hello World!——SkyHunter)

1 基于NABCD评论作品&#xff0c;及改进建议 SkyHunter这款游戏我很喜欢&#xff0c;小时候总玩飞机类的游戏&#xff0c;这款游戏我上课的时候试玩了&#xff0c;在我电脑上运行是很好玩的&#xff0c;音乐震撼&#xff0c;画面玄幻&#xff0c;富有金属音乐的味道&#xff0c…

unshift() 方法将一个或多个元素添加到数组的开头,并返回新数组的长度

var arr [1, 2];arr.unshift(0); //result of call is 3, the new array length //arr is [0, 1, 2]arr.unshift(-2, -1); // 5 //arr is [-2, -1, 0, 1, 2]arr.unshift( [-3] ); //arr is [[-3], -2, -1, 0, 1, 2]语法 arr.unshift(element1, ..., elementN)参数列表 elemen…

markdown基础语法整理

标题级别(一共六级) &#xff08;建议在#后加一个空格比较标准&#xff09; 通过在文字下方添加“”和“-”&#xff0c;他们分别表示一级标题和二级标题。在文字开头加上 “#”&#xff0c;通过“#”数量表示几级标题。&#xff08;共1~6级标题&#xff0c;级别越小字体越大&a…

安卓源码下载

SetupSecurityPortingTuningCompatibilityReference转到源代码SetupGetting StartedDownloading and Building RequirementsEstablishing a Build EnvironmentDownloading the SourcePreparing to BuildCompiling with JackUsing Reference BoardsRunning BuildsBuilding Kerne…

mysql常用命令英文词汇_MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档

MySQL在高并发连接、数据库记录数较多的情况下&#xff0c;SELECT ... WHERE ... LIKE %...%的全文搜索方式不仅效率差&#xff0c;而且以通配符%和_开头作查询时&#xff0c;使用不到索引&#xff0c;需要全表扫描&#xff0c;对数据库的压力也很大。MySQL针对这一问题提供了一…

dobbo 简单框架

转载于:https://www.cnblogs.com/huangjianping/p/7986881.html

spring mysql整合_springboot mybatis mysql 整合

1、pom文件配置mysqlmysql-connector-javaruntimeorg.springframework.bootspring-boot-starter-testtestorg.mybatis.spring.bootmybatis-spring-boot-starter1.2.0org.springframework.bootspring-boot-starter-jdbc2、mybatis 数据库连接配置spring.datasource.driver-class…

微信小程序怎么取mysql_微信小程序如何加载数据库真实数据?

微信小程序要加载网站数据库里面的真实数据&#xff0c;有一个硬性的要求&#xff0c;就是你的网站域名必须是https协议才行&#xff0c;要不然你第一步服务器域名配置你都通过不了&#xff0c;小编我也是前不久申请的https://www.100txy.com&#xff0c;具体申请步骤大家自行去…

mysql定时任务

1. 查看是否开启定时策略 show variables like %event_sche%; 若出现如下图&#xff0c;则此时是关闭状态 开启定时策略(重启无效) set global event_scheduler 1; 则需要在配置文件my.ini的设置(重启有效) [mysqld] event_schedulerON //这一行加入mysqld标签下 2. 创建存储过…

02使用常规步骤编译NanoPiM1Plus的Android4.4.2

02使用常规步骤编译NanoPiM1Plus的Android4.4.2 大文实验室/大文哥 壹捌陆捌零陆捌捌陆捌贰 21504965 AT qq.com 完成时间&#xff1a;2017/12/5 17:51 版本&#xff1a;V1.0 开发板&#xff1a;NanoPi M1 Plus/zh SDK&#xff1a;Android4.4.2 按照全志A33平台编译调通的功能&…

验证 Swarm 数据持久性 - 每天5分钟玩转 Docker 容器技术(104)

上一节我们成功将 Rex-Ray Volume 挂载到了 Service。本节验证 Failover 时&#xff0c;数据不会丢失。 Scale Up 增加一个副本&#xff1a; docker service update --replicas 2 my_web 运行之前我们先推测一下&#xff0c;理想的结果应该是&#xff1a;swarm 在 swarm-worker…

java multimap 序列化_C++ JSON库的使用

1. 如何使用&#xff1f;2. 常用方法2.1 创建json对象2.1.1 使用cin,cout输入输出流2.1.2 提供根据键直接生成键值对的方法2.1.3 json::array json::object2.1.4 几个区别2.2 序列化2.2.1 标准输出自动序列化2.2.2 使用dump()函数2.3 反序列化2.3.1 从标准输入反序列化2.3.2 通…