# 產學-學習筆記03 小結 ###### tags: `學習筆記` `JAVA` `查詢類` `MySQL` `Hibernate` `Struts2` --- <!--大標--> # 總攬 * ### 結合前面所學做一簡易購物車網站 --- # 建立購物⾞網站 ### 建立專案與Server(Tomcat) * #### 1.建立Maven Project專案  * #### 2.輸入org.apache.maven搜尋找到web-app  * #### 3.專案出現紅X-插入servlet.jar就好    * #### 4.專案new⼀個server  * #### 5.選apache8.5  * #### 6.找到apache的⽬錄位址  * #### 7.下⽅出現server  ### 掛入Maven * #### 1.搜尋maven repository https://mvnrepository.com/ * #### 2.找MySQL Connectory/J 5.1.48   * #### 3.複製到pom.xml-貼在dependency裡  * #### 4.搜尋struts2 Core 2.5.22   * #### 5.複製到pom.xml * #### 6.hibernate - 5.4.13   * #### 7.複製到pom.xml * #### 8.完成MySQL, Struts2, Hibernate加掛⾄pom.xml  ### 建立controller, dao, model * #### 1.新建3個package  * #### 2.開啟mySQL-新增schema(表單)-crate Table  * #### 3.member table  * #### 4.porder table  * #### 5.(package)model>>(class)member>>建立資料庫所擁有的資訊-getter&setter  * #### 6.(package)model>>(class)porder>>建立資料庫所擁有的資訊-getter&setter  * #### 7.member和porder加掛hibernate   * #### 8.於src加掛hibernate   相關資料自行輸入   * #### 9.Hibernate.cfg.xml-Session Factory>>建立Mappings>>member, porder(2個都要掛入)  * #### 10.dao建立interface  * #### 11.撰寫-出現紅線-Static-專案修改版本為1.8     * #### 12.程式碼 implDao ```java= package dao; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public interface implDao { //連線方法 static Session getSe() { Configuration conn=new Configuration().configure(); SessionFactory sf=conn.buildSessionFactory(); Session se=sf.openSession(); return se; } //新增 void add(Object o); //查詢 Object get(int id); //更新 void update(Object o); //刪除 void delete(Object o); } ``` 新增memberDao ```java= package dao; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import model.member; public class memberDao implements implDao{ public static void main(String[] args) { Session se=implDao.getSe(); //Query q=se.createQuery("From member where(id between 2 and 5) and name in('john','allen')"); //Query q=se.createQuery("From member as m where m.id>2 and m.id<5 "); //SQLQuery q=se.createSQLQuery("select * from member"); //q.addEntity(member.class); //Query q=se.createQuery("from member where user='aaf' and password='1234'"); //List<member> l=q.list(); System.out.println(checkUserDu("abc2").size()); /*for(member m:l) { System.out.println(m.getId()+"\t"+m.getName()+"\t"+m.getUser()); }*/ /*member m=new member(); m.setName("yyy"); m.setUser("pru"); m.setPassword("1234"); m.setPhone("00000"); m.setAddress("tai"); new memberDao().add(m);*/ } //帳號密碼檢查 public static List<member> checkUser(String user,String password) { Session se=implDao.getSe(); Query q=se.createQuery("from member where user='"+user+"' and password='"+password+"'"); List<member> l=q.list(); return l; } //帳號重複檢查 public static List<member> checkUserDu(String user) { Session se=implDao.getSe(); Query q=se.createQuery("from member where user='"+user+"'"); List<member> l=q.list(); return l; } @Override public void add(Object o) { Session se=implDao.getSe(); Transaction tx=se.beginTransaction(); se.save(o); tx.commit(); se.close(); } @Override public Object get(int id) { // TODO Auto-generated method stub return null; } @Override public void update(Object o) { // TODO Auto-generated method stub } @Override public void delete(Object o) { // TODO Auto-generated method stub } } ``` * #### 13.memberDao可以測試是否有連接資料庫(新增) ⼿動新增資料-測試 ```java= member m=new member(); m.setName("yyy"); m.setUser("pru"); m.setPassword("1234"); m.setPhone("00000"); m.setAddress("tai"); new memberDao().add(m); ```  * #### 14.memberDao可以測試是否有連接資料庫(查詢)  使用HQL語法語SQL語法去查詢資料庫資料  ### 使用Struts * #### 1.搜尋struts webxml sample https://struts.apache.org/core-developers/web-xml.html  ``` <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` * #### 2.加掛在web.xml  * #### 3.新增struts.xml(需在src/main/java下)-修改(需對應前端-等等做) ```java= <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <package name="default" extends="struts-default"> <action name="login" class="controller.loginAction"> <result name="loginok" type="redirect">loginok.jsp</result> <result name="addmember" type="redirect">addmember.jsp</result> </action> <action name="checkUser" class="controller.checkUserAction"> <result name="userduplicate" type="redirect">userduplicate.jsp</result> <result name="addmemberok" type="redirect">addmemberok.jsp</result> </action> </package> </struts> package controller; ``` ### 程式碼區塊 * #### 1.後端-在controller包裡建立checkUserAction.java ```java= package controller; import Dao.memberDao; import model.member; public class checkUserAction { private String user; private String password; public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } // public String execute() throws Exception { int x=memberDao.checkUserDu(getUser()).size(); if(x!=0) { return "userduplicate";//重複 } else { member m=new member(); m.setUser(getUser()); m.setPassword(getPassword()); new memberDao().add(m); return "addmemberok";//建立成功 } } } ``` * #### 2.後端-在controller包裡建立loginAction.java ```java= package controller; import java.util.List; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import Dao.memberDao; import model.member; public class loginAction extends ActionSupport{ private String user; private String password; public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String execute() throws Exception { //if(getUser().equals("abc") && getPassword().equals("1234")) //int x=memberDao.checkUser(getUser(), getPassword()).size(); List l=memberDao.checkUser(getUser(), getPassword()); if(l.size()!=0) { Object[] o=l.toArray(); member m=(member)o[0]; System.out.println(m); Map session = ActionContext.getContext().getSession(); session.put("M",m); return "loginok"; } else { return "addmember"; } } } ``` * #### 3.前端-index.jsp ```javascript= <%@ page contentType="text/html; charset=UTF-8" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head> </head> <body> <a href=''>1>購物</a><p> <a href='login.jsp'>2>登入</a><p> <a href='addmember.jsp'>3>註冊</a><p> </body> </html> ``` * #### 4.前端-login.jsp ```javascript= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="login" method="post"> 帳號:<input type="text" name="user"><br> 密碼:<input type="text" name="password"><br> <input type="submit" value="ok"> </form> </body> </html> ``` * #### 5.前端-loginok.jsp ```javascript= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>登入成功</h1> <a href="">1)會員管理</a><br> <a href="">2)購物</a><br> </body> </html> ``` * #### 6.前端-userduplicate.jsp ```javascript= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>帳號重複</h1> <a href="addmember.jsp">重新註冊</a> </body> </html> ``` * #### 7.前端-addmamer.jsp ```javascript= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="checkUser" method="post"> 帳號:<input type="text" name="user"><br> 密碼:<input type="text" name="password"><br> <input type="submit" value="ok"> </form> </body> </html> ``` * #### 8.前端-addmemberok.jsp ```javascript= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>帳號建立成功</h1> <a href="login.jsp">回登入頁</a> </body> </html> ``` * #### 9.run-點選"登入"  * #### 10.輸入資料庫沒有的資料  * #### 11.導入新建帳號密碼  * #### 12.建立成功  * #### 13.資料建置成功  * #### 14.新增帳號密碼時重複畫⾯ 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up