文章目錄
- 引言
- 專案展示
- 專案目錄
- 專案代碼
- 1. 攔截器
- 2. 檔案上傳與下載
- 3. 增刪改查
- 問題解決
- 總結
引言
本專案是基于第十二屆服創的A01賽題,內容還是比較簡單的,記錄一下經過吧,
前期由于偷懶,把賽題分析交給了文本的同學,造成了分析不到位以及有點偏題了,所幸問題不大,
前期打算用ssm為架構完成,在中期時發現某書上有個用jsp寫的模板,就直接copy了,
在后期為了增加ajax,攔截器以及檔案上傳下載等功能,又增上了SpringMVC架構,
因此造就了這個四不像,有著SpringMVC架構,卻用著JDBC…,
總而言之還是經驗不足,見風使舵了!
博主是萌新上路,文中如有不當之處,請各位大佬指出,共同進步,謝謝,
專案展示
不速之客—【A01】小微企業跨組織人才管理系統—專案演示視頻
特此感謝睿姐配音![鞠躬]
專案目錄

因為是基于服創的,所以是組隊開發合并的,一開始就是前后端分離,因此造成了部分檔案出現了中文命名,dddd,

專案代碼
以下將展示部分代碼,源代碼可在此處下載,
1. 攔截器
本意是為了防止通過直接輸入地址進行訪問和分級權限管理的,結果吧,沒有用上,但還是寫著了…
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
// 如果是登陸頁面則放行
System.out.println("uri: " + request.getRequestURI());
if (request.getRequestURI().contains("login")) {
return true;
}
if (request.getRequestURI().contains("validate")) {
return true;
}
HttpSession session = request.getSession();
// 如果用戶已登陸也放行
if(((String)session.getAttribute("validated")).equals("ok")) {
return true;
}
return false;
}
}
2. 檔案上傳與下載
本來想著根據當前員工的編號,程式自動更改上傳檔案的檔案名再進行存盤,這樣的話,瀏覽或下載檔案也可以直接根據以員工編號為檔案名進行查找即可,不過為了方便起見,這里并沒有體現出來,只是正常的檔案上傳和下載功能,
檔案上傳
@RequestMapping("/chengguo")
public String fileUpload2(@RequestParam("chengguo") CommonsMultipartFile file, HttpServletRequest request) throws IOException {
//上傳路徑保存設定
String path = request.getServletContext().getRealPath("/作業成果");
File realPath = new File(path);
if (!realPath.exists()){
realPath.mkdir();
}
//上傳檔案地址
System.out.println("上傳檔案保存地址:"+realPath);
//通過CommonsMultipartFile的方法直接寫檔案(注意這個時候)
file.transferTo(new File(realPath +"/"+ file.getOriginalFilename()));
return "<script Language='JavaScript'>window.alert('上傳成功!')</script>" +
"<script language='JavaScript'>history.back()</script>";
}
檔案下載
@RequestMapping(value="/downloadCG")
public String downloads1(HttpServletResponse response , HttpServletRequest request) throws Exception{
//要下載的圖片地址
String path = request.getServletContext().getRealPath("/作業成果");
String fileName = "1234567.pdf";
//1、設定response 回應頭
response.reset(); //設定頁面不快取,清空buffer
response.setCharacterEncoding("UTF-8"); //字符編碼
response.setContentType("multipart/form-data"); //二進制傳輸資料
//設定回應頭
response.setHeader("Content-Disposition",
"attachment;fileName="+ URLEncoder.encode(fileName, "UTF-8"));
File file = new File(path,fileName);
//2、 讀取檔案--輸入流
InputStream input=new FileInputStream(file);
//3、 寫出檔案--輸出流
OutputStream out = response.getOutputStream();
byte[] buff =new byte[1024];
int index=0;
//4、執行 寫出操作
while((index= input.read(buff))!= -1){
out.write(buff, 0, index);
out.flush();
}
out.close();
input.close();
return null;
}
3. 增刪改查
這里本來有SSM架構的話,資料庫應該使用mybatis寫比較方便,但是用了模板,所以就用JDBC了,造成了大量的代碼冗余吧,以下僅選取片段展示,這是寫在jsp中的代碼塊,
<%
String bh = (String)session.getAttribute("zgbh");
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://localhost:3307/rsgl?useSSL=false&useUnicode=true&characterEncoding=UTF-8";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
String sql = "select * from zgb,bmb,jlb,users" +
" where zgb.bm = bmb.bmbh and zgb.bh=jlb.zgbh and zgb.bh=users.username and bh=?" +
"order by bh";
String sql1 = "insert into checkb(bh,xm,xb,bm,csrq,jbgz,gwjt,gwpj,jzjl,zwpj,password,usertype) " +
"values(?,?,?,?,?,?,?,?,?,?,?,?)";
String sql2 = "delete from zgb where bh=?";
String sql3 = "delete from jlb where zgbh=?";
String sql4 = "delete from users where username=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,bh);
ResultSet rs0 = pstmt.executeQuery();
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 csrq0 = sdf.format(rs0.getDate("csrq"));
String jbgz0 = String.valueOf(rs0.getFloat("jbgz"));
String gwjt0 = String.valueOf(rs0.getFloat("gwjt"));
String jzjl0 = rs0.getString("jzjl").trim();
String gwpj0 = rs0.getString("gwpj").trim();
String zwpj0 = rs0.getString("zwpj").trim();
String pwd0 = rs0.getString("password").trim();
String type0 = rs0.getString("usertype").trim();
rs0.close();
pstmt = conn.prepareStatement(sql1);
pstmt.setString(1,bh);
pstmt.setString(2,xm0);
pstmt.setString(3,xb0);
pstmt.setString(4,bm0);
pstmt.setString(5,csrq0);
pstmt.setString(6,jbgz0);
pstmt.setString(7,gwjt0);
pstmt.setString(8,gwpj0);
pstmt.setString(9,jzjl0);
pstmt.setString(10,zwpj0);
pstmt.setString(11,pwd0);
pstmt.setString(12,type0);
pstmt.executeUpdate();
pstmt = conn.prepareStatement(sql2);
pstmt.setString(1,bh);
int n1 = pstmt.executeUpdate();
pstmt = conn.prepareStatement(sql3);
pstmt.setString(1,bh);
int n2 = pstmt.executeUpdate();
pstmt = conn.prepareStatement(sql4);
pstmt.setString(1,bh);
int n3 = pstmt.executeUpdate();
if (n1>0 && n2>0 && n3>0){
%>
<script Language='JavaScript'>window.alert('職工記錄洗掉成功!')</script>
<script>window.location="${pageContext.request.contextPath}/hr/allList"</script>
<%
}else {
%>
<script Language='JavaScript'>window.alert('職工記錄洗掉失敗!')</script>
<script language="JavaScript">history.back()</script>
<%
}
pstmt.close();
conn.close();
} catch (Exception e){
out.print(e.toString());
}
%>
上述代碼的主要功能就是,HR選擇洗掉員工時,先將該員工的所有資料插入到一個表checkb中,這個表中的人員都是被HR所辭退的,最終都會出現在領導的管理系統中,如果領導不同意辭退該員工的話,則他的資料將會被重新插入到原有的所有表中,即實作恢復員工的功能,同時洗掉checkb表中該員工的記錄,如果領導同意辭退,則直接在checkb表中洗掉該記錄即可,
之所以用了3個delete陳述句是因為一句delete洗掉三個表一直給我報錯,為了不糾結這個問題,就分開寫了,all in all,博主是小菜雞,
問題解決
搭建了SpringMVC架構之后,出現了index.jsp界面的css顯示不出來的問題,

然后網上搜尋了一番之后,找到了一個在這里可行的方法,增加靜態資源過濾,即在web.xml中添加如下代碼:
<!-- static resources -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
就是將你所用到的資源檔案都過濾一遍,不會被攔截即可顯示,
總結
不速之客五個人小隊第一次參加服務外包創新大賽,由于經驗不足,一路磕磕碰碰,但所幸我們小隊都走過來了,堅持下來了,
由于知識儲備不足,以完成專案為第一要務,因此選擇了A01賽題,當做完的時候才察覺有些簡單,不過這都無傷大雅,
最后,十分感謝隊員的理解與支持,作為隊長,由于經驗不足,造成了戰略性錯誤,深感抱歉,但是隊友不抱怨,用行動以表理解真的讓我很感動,這五個月感謝有你們!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/279854.html
標籤:其他
