共计 4564 个字符,预计需要花费 12 分钟才能阅读完成。
download:Selenium3+Pytest+Allure 落地 Python Web 自动化测试
小微企业跨组织人才管理系统
介绍
因为后期比拟懒,把竞赛题的剖析交给了文的同学,导致剖析不到位,有点跑题。侥幸的是,这不是一个大问题。
后期打算用 ssm 做框架。两头阶段在一本书上发现了一个用 jsp 写的模板,就间接复制了。
前期为了减少 ajax、拦截器、文件上传下载性能,退出了 SpringMVC 架构。
因而,这四个不同点就产生了,用的是 SpringMVC 架构,而 JDBC…,
总而言之,我还是没教训,见机行事!
我的项目代码
上面将展现局部代码,源代码能够在这里下载,
1. 拦截机
它旨在通过间接输出地址来避免拜访和分级权限治理。后果没用,还是写了。…
公共类 LoginInterceptor 实现 HandlerInterceptor {
public boolean pre handle(http servlet request 申请、HttpServletResponse 响应、对象处理程序)引发 ServletException、IOException {
// 如果是登录页面,就公布。
system . out . println(” uri:”+request . getrequest uri());
if (request.getRequestURI()。蕴含 (“登录”){
返回 true
}
if (request.getRequestURI()。蕴含 (“验证”){
返回 true
}
http session session = request . getsession();
// 如果用户曾经登录,则开释它。
if(((String)session . get attribute(” validated “))。等于 (” ok”)) {
返回 true
}
返回 false
}
}
复制代码
2. 文件上传和下载
原本认为程序会依据以后员工的编号,主动更改上传文件的文件名,而后保留。这种状况下,浏览或下载文件也能够间接依据员工号作为文件名进行搜寻。然而,为了不便起见,这里没有体现。它只是一个失常的文件上传和下载性能。
文件上传
@ request mapping(“/ 郭城 ”)
公共字符串 fileUpload2(@RequestParam(“ 郭城 ”)CommonsMultipartFile 文件,HttpServletRequest 申请)抛出 IOException {
// 上传保留设置的门路
门路 = 申请;getservletcontext();get real path(“/work product “);
File realPath = 新文件 (门路);
如果(!realPath.exists()){
real path . mkdir();
}
// 上传文件地址
System.out.println(“ 上传文件的保留地址:”+realPath);
// 间接用 CommonsMultipartFile 的办法写文件(这次留神)
file.transferTo(新文件(real path+”/”+File . getoriginalfilename()));
Return “window.alert(‘ 上传胜利!’)” +
” history . back()”;
}
复制代码
下载文件
@ request mapping(value = “/download CG “)
公共字符串 downloads1(HttpServletResponse 响应,HttpServletRequest 申请)引发异样 {
// 要下载的图片的地址
门路 = 申请;getservletcontext();get real path(“/work product “);
String fileName = ” 1234567.pdf
//1. 设置响应头。
response . reset();// 设置不缓存页面,清空缓冲区
response . setcharacterencoding(” UTF-8 “);// 字符编码
response . set content type(” multipart/form-data “);// 二进制传输数据
// 设置响应头
response.setHeader(“ 内容 - 处理 ”,
“附件;fileName=”+ URLEncoder.encode(文件名,” UTF-8 “));
File file = 新文件(门路,文件名);
//2. 读取文件输出流
InputStream input = new file InputStream(file);
//3,写出文件输入流
output stream out = response . get output stream();
byte[]buff = 新字节 [1024];
int index = 0;
//4,执行写出操作。
while((index= input.read(buff))!= -1){
out.write(buff,0,index);
out . flush();
}
out . close();
input . close();
返回 null
}
复制代码
3. 增加、删除和查看
原本这里如果有 SSM 架构的话,数据库用 mybatis 写会更不便,然而用了模板,所以用了 JDBC,造成了很多代码冗余。这里只选取片段展现。这是用 jsp 写的代码块。
String BH =(String)session . get attribute(” zgbh “);
尝试{
class . forname(” com . MySQL . JDBC . driver “)。new instance();
string URL = ” JDBC:MySQL://localhost:3307/rsgl?use SSL = false & use unicode = true & character encoding = UTF-8 “;
String user = ” root
String password = ” 123456
connection conn = driver manager . getconnection(URL,user,password);
String sql = “select * from zgb,bmb,jlb,users” +
“ 其中 zgb.bm = bmb.bmbh 和 zgb.bh=jlb.zgbh 和 zgb.bh=users.username 和 bh=?”+
”由 bh 订购”;
string SQL 1 = ” insert into checkb(BH,xm,xb,bm,csrq,jbgz,gwjt,gwpj,jzjl,zwpj,password,usertype) ” +
“价值观(?,?,?,?,?,?,?,?,?,?,?,?)”;
string SQL 2 = ” delete from zgb where BH =?”;
string SQL 3 = ” delete from jlb where zgbh =?”;
String sql4 = “ 从用户名 = 的用户中删除?”;
prepared statement pstmt = conn . prepare statement(SQL);
pstmt.setString(1,BH);
ResultSet rs0 = pstmt . execute query();
SimpleDateFormat SDF = new SimpleDateFormat(” yyyy-MM-DD “);
rs0 . next();
String xm0 = rs0.getString(“xm “)。trim();
String xb0 = rs0.getString(“xb “)。trim();
String bm0 = rs0.getString(“bmmc “)。trim();
string csrq 0 = SDF . format(rs0 . getdate(” csrq “));
string jbgz 0 = string . value of(rs0 . get float(” jbgz “));
string gwjt 0 = string . value of(rs0 . get float(” gwjt “));
string jzjl 0 = rs0 . getstring(” jzjl “)。trim();
string gwpj 0 = rs0 . getstring(” gwpj “)。trim();
string zwpj 0 = rs0 . getstring(” zwpj “)。trim();
string pwd 0 = rs0 . getstring(” password “)。trim();
string type 0 = rs0 . getstring(” usertype “)。trim();
rs0 . close();
PS TMT = conn . prepare statement(SQL 1);
pstmt.setString(1,BH);
pstmt.setString(2,xm0);
pstmt.setString(3,xb0);
pstmt.setString(4,bm0);
pstmt.setString(5,csrq 0);
pstmt.setString(6,jbgz 0);
pstmt.setString(7,gwjt 0);
pstmt.setString(8,gwpj 0);
pstmt.setString(9,jzjl 0);
pstmt.setString(10,zwpj 0);
pstmt.setString(11,pwd 0);
pstmt.setString(12,type 0);
PS TMT . execute update();
PS TMT = conn . prepare statement(SQL 2);
pstmt.setString(1,BH);
int n1 = PS TMT . execute update();
PS TMT = conn . prepare statement(SQL 3);
pstmt.setString(1,BH);
int N2 = PS TMT . execute update();
PS TMT = conn . prepare statement(SQL 4);
pstmt.setString(1,BH);
int n3 = PS TMT . execute update();
if (n1>0 && n2>0 && n3>0){
%>
Window.alert(‘ 胜利删除员工记录!’)
window . location = ” $ {pagecontext . request . context path}/HR/all list “
}否则{
%>
Window.alert(‘ 员工记录删除失败!’)
history.back()
}
pstmt . close();
conn . close();
} catch(异样 e){
out . print(e . tostring());
}
%>
复制代码
下面这段代码的次要作用是,当 HR 抉择删除一个员工时,首先将该员工的所有信息插入到一个 checkb 表中。此表中的员工全副被 HR 解雇,最终会呈现在领导的管理系统中。如果领导不批准解雇该员工,那么他的数据会被从新插入到所有的原始表中,也就是实现了复原该员工的性能,同时 checkb 表中该员工的记录也会被删除。如果领导批准解雇,间接放在 checkb。
之所以用三个 delete 语句,是因为一个 delete 语句删除三个表,总是给我一个谬误。为了不纠结这个问题,我把它们离开写了,总之,
摘要
不请自来的五人团队第一次加入服务外包翻新大赛。因为经验不足,咱们一路趔趔趄趄,但侥幸的是,咱们的团队来了,保持下来了。
因为常识储备有余,第一要务是实现我的项目,所以抉择了 A01 竞赛题。当我写完的时候,我意识到这有点简略,然而无伤大雅。