# 7號筆記本
###### tags: `筆記本`
```YY5GFs93iZY9FXNK2k2nMHzso9ZpuBsUMqg227fTpUc=
String userid = req.getParameter("userid"); //取得html user欄位值
req.setAttribute("userid", userid); //將值存入Attribute
req.getRequestDispatcher("/AccountServlet").forward(req, res); //導向AccountServlet.java
req.getRequestDispatcher("/login.html").forward(req, res); //導向login.html
String[] records = (String[]) data.get(userid); //取得init內容值
```
```
public void init()
{
data.put("ann", new String[]{ "01/01/2001 : 1000.00", "01/02/2001 : 1300.00", "01/03/2001 : 900.00"} );
data.put("john", new String[]{ "01/01/2001 : 4500.00", "01/02/2001 : 2100.00", "01/03/2001 : 2600.00"} );
data.put("mark", new String[]{ "01/01/2001 : 7800.00", "01/02/2001 : 5200.00", "01/03/2001 : 1900.00"} );
}
```
# servlet筆記 取xml(context-param值) (AccountServlet.java LoginServlet.java Login.html)
```
ServletContext context = this.getServletContext();
String webmaster = context.getInitParameter("webmaster"); //去xml裡取context-parm的value
```
```
<context-param>
<param-name>webmaster</param-name>
<param-value>webmaster@abc.org.tw</param-value>
</context-param>
```
# servlet筆記 取xml(init-parm值)並透過相對路徑取得絕對入境 (CounterServlet.java)
(init部分)
```
ServletConfig config = this.getServletConfig();
String relativePathName = null;
String realPathName = null;
BufferedReader bufferedReader = null;
relativePathName = config.getInitParameter("VisitingCounterNoFileName"); /*去xml裡取init-parm的value*/
InputStream inStream = context.getResourceAsStream(relativePathName);
bufferedReader = new BufferedReader(new InputStreamReader(inStream));
realPathName = context.getRealPath(relativePathName); /*利用相對路徑得到真實路徑*/
(doget部分)
synchronized (context) { //執行緒
localVisitingCounterNo = (String) context.getAttribute("visitingCounterNo");
localVisitingCounterNo = String.valueOf((Integer.parseInt(localVisitingCounterNo)+1));
context.setAttribute("visitingCounterNo",localVisitingCounterNo);
}
(destroy部分)
fileWriter = new FileWriter(realPathName); //更改記事本內容
bufferedWriter = new BufferedWriter(fileWriter);
printWriter = new PrintWriter(bufferedWriter);
String visitingCounterNo = (String) context.getAttribute("visitingCounterNo");
printWriter.println(visitingCounterNo);
```
```
<init-param>
<description></description>
<param-name>VisitingCounterNoFileName</param-name>
<param-value>/WEB-INF/VisitingCounterNoFileName.txt</param-value>
</init-param>
```
# servlet筆記 (DeclarativeErrorHandlingServlet.java)
```
```
# servlet筆記 Header範例
```
response.setStatus(HttpServletResponse.SC_OK); //SC_OK=200 servlet回應200狀態碼
String tempSite ="http://127.0.0.1:8080/example/helloB"; //存放新的url位址
response.setHeader("location", tempSite); //第一個是header名稱,第二個是變數名稱
# servlet筆記 導向網站
response.sendRedirect("http://127.0.0.1:8080/example/helloB");
# servlet筆記
http://localhost:8080/WebDemo/EnglishGreeting //對應xml <url-pattern>/EnglishGreeting</url-pattern>
```
```
<servlet>
<description></description>
<display-name>EnglishGreeting</display-name>
<servlet-name>EnglishGreeting23</servlet-name>
<servlet-class>GreetingServlet</servlet-class>
<init-param>
<param-name>greetingText</param-name>
<param-value>Hello</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>EnglishGreeting23</servlet-name>
<url-pattern>/EnglishGreeting</url-pattern>
</servlet-mapping>
```
# servlet筆記 session
```
HttpSession session = req.getSession(true); //Get the session object
session.isNew() //是否是新的session
session.getId() //session id
new Date(session.getCreationTime()) //產生時間
new Date(session.getLastAccessedTime()) //最後存取時間
session.getAttribute("counter") //次數
session.invalidate(); //關閉session
```
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<sql:setDataSource var="ds" dataSource="jdbc/EmployeeDB" />
<sql:query sql="select * from member" var="rs" dataSource="${ds}" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test Database Connection Pooling</title>
</head>
<body>
<h2>Results</h2>
<table border="1" >
<th>author</th>
<th>title</th>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row.userid}</td>
<td>${row.password}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
```
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>02DOM2.html</title>
<script>
document.addEventListener("DOMContentLoaded", function () {
document.getElementById("CEle").addEventListener("click", CreateElement)
document.querySelector("#REle").addEventListener("click",RempveElement)
});
function RempveElement() {
let theNode=document.querySelector("#idImg")
console.log(theNode)
// theNode.parentNode.removeChild(theNode)
theNode.remove();
}
function CreateElement() {
let theDIV = document.getElementById("iddiv"); //取得div物件
let eleP = document.createElement("p"); //<p></p>
let txtP = document.createTextNode("Hello World"); //Hello World
eleP.appendChild(txtP); // <p>Hello World</p>
theDIV.appendChild(eleP);//<div id="iddiv">div<p>Hello World</p></div>
let eleImg = document.createElement("img"); //<img>
eleImg.setAttribute("src", "DOM/DOMImage/rabbit-hat.gif"); //<img src="...">
eleImg.setAttribute("id","idImg")
theDIV.appendChild(eleImg);//<div id="iddiv">div<p>Hello World</p><img src="..."></div>
}
</script>
</head>
<body>
<div id="iddiv">div</div>
<input type="button" id="CEle" value="CreateElement">
<input type="button" id="REle" value="RempveElement">
</body>
</html>
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
HttpSession session = request.getSession();
MemberBean logoutmb = (MemberBean) session.getAttribute("loginuser");
logoutmb.setLogout_time(sdf.format(new Date(session.getLastAccessedTime())));
MemberDao.InsertLogoutTime(logoutmb);
String sql="" +
"insert into member" +
"(userid,password,chinesename,sex,phone,email,address,birthday)" +
"values(" +
"?,?,?,?,?,?,?,?)";
re=/^((((19|20)(([02468][048])|([13579][26]))(\/02\/29|\/2\/29)))|((20[0-9][0-9])|(19[0-9][0-9]))\/(((|(0[1-9])|([1-9])|(1[0-2]))\/(([1-9])|(0[1-9])|(1[0-9])|(2[0-8])))|((((0[13578])|(1[02]))\/31)|(((0[1,3-9])|([1])|([3-9])|(1[0-2]))\/(29|30)))))$/;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="/somewhere/to/upload" enctype="multipart/form-data">
<input name="progressbarTW_img" type="file" id="imgInp" accept="image/gif, image/jpeg, image/png"/ >
<img id="preview_progressbarTW_img" src="#" style="width: 50px;height: 50px;"/>
</form>
<script src="../JQUERY/jquery-3.5.1.js"></script>
<script>
$("#imgInp").change(function(){
//當檔案改變後,做一些事
readURL(this); // this代表<input id="imgInp">
});
function readURL(input){
if(input.files && input.files[0]){
var reader = new FileReader();
reader.onload = function (e) {
$("#preview_progressbarTW_img").attr('src', e.target.result);
console.log(e.target.result)
}
reader.readAsDataURL(input.files[0]);
}
}
</script>
</body>
</html
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
sp.innerHTML="<i class=\"fa fa-times\" style=\"color: red;\"></i>
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
re = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{6,}$/;
re = /^([\u4e00-\u9fa5]){2,}$/;
<c:set var = "empId" value = "<%=loginuser.getUserid()%>"/>
<sql:query var="rs" dataSource="${ds}" >
select * from logininf where userid = ? order by logintime;
<sql:param value = "${empId}"/>
</sql:query>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control","no-cache"); // HTTP 1.1
response.setHeader("Pragma","no-cache"); // HTTP 1.0
response.setDateHeader ("Expires", -1); // Prevents caching at the proxy server
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>新增</title>
<style>
body {
background-color: #F0F0F0;
}
h2{
text-align: center;
color: #003D79;
}
fieldset{
background-color: #FFFFFF;
width: 450px;
border:1px solid #ADADAD;
border-radius: 15px;
margin: 0px auto;
padding:0 50px ;
}
.divst {
width: 450px;
border-bottom: 1px dotted #ADADAD;
margin: 10px;
padding-bottom: 5px;
}
legend {
margin:auto;
}
.sub {
width: 450px;
margin: 10px;
text-align: center;
}
.st1 {
width: 70px;
float: left;
text-align: left;
}
</style>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", function () {
document.getElementById("name").addEventListener("blur", check1); //事件繫結,焦點離開
document.getElementById("address").addEventListener("blur", check2); //事件繫結,焦點離開
document.getElementById("image").addEventListener("blur", check3); //事件繫結,焦點離開
document.getElementById("introduction").addEventListener("blur", check4); //事件繫結,焦點離開
});
function check1() {
let nameObjVal = document.getElementById("name").value;
let sp_name = document.getElementById("sp_name");
if (nameObjVal == "")
sp_name.innerHTML = "不可為空白";
}
function check2() {
let addressObjVal = document.getElementById("address").value;
let sp_name = document.getElementById("sp_name");
if (addressObjVal == "")
sp_address.innerHTML = "不可為空白";
}
function check3() {
let imageObjVal = document.getElementById("image").value;
let sp_image = document.getElementById("sp_image");
if (imageObjVal == "")
sp_image.innerHTML = "不可為空白";
}
function check4() {
let introductionObjVal = document.getElementById("introduction").value;
let sp_introduction = document.getElementById("sp_introduction");
if (introductionObjVal == "")
sp_introduction.innerHTML = "不可為空白";
}
</script>
</head>
<body>
<form action="AttrationsServlet?action=up" method="post" enctype = "multipart/form-data">
<div>
<h2>請輸入景點資料</h2>
</div>
<fieldset>
<legend>新增內容</legend>
<div class="divst">
<label for="name" class="st1">景點名稱:</label>
<input type="text" id="name" name="name" size="20">
<span id="sp_name"></span><br/>
</div>
<div class="divst">
<label class="st1">縣市:</label>
<select name="counties">
<option value="台北市">台北市</option>
<option value="新北市">新北市</option>
<option value="桃園縣">桃園縣</option>
<option value="新竹市">新竹市</option>
<option value="苗栗縣">苗栗縣</option>
<option value="臺中市">臺中市</option>
<option value="彰化縣">彰化縣</option>
<option value="南投縣">南投縣</option>
<option value="雲林縣">雲林縣</option>
<option value="嘉義縣">嘉義縣</option>
<option value="臺南市">臺南市</option>
<option value="高雄市">高雄市</option>
<option value="屏東縣">屏東縣</option>
<option value="宜蘭縣">宜蘭縣</option>
<option value="花蓮縣">花蓮縣</option>
<option value="臺東縣">臺東縣</option>
<option value="澎湖縣">澎湖縣</option>
<option value="金門縣">金門縣</option>
<option value="連江縣">連江縣</option>
</select>
</div>
<div class="divst">
<label class="st1" for="address">完整地址:</label>
<input type="text" id="address" name="address" size="40">
<span id="sp_address"></span><br/>
</div>
<div class="divst">
<input type='hidden' name='image1' id='image1' >
<label class="st1" for="image">照片:</label>
<input type="file" id="image" name="image" accept="image/gif, image/jpeg, image/png">
<span id="sp_image"></span><br/>
</div>
<div class="divst">
<label for="introduction" class="st1">介紹:</label>
<input type="text" id="introduction" name="introduction" placeholder="250字以內" size="40">
<span id="sp_introduction"></span><br/>
</div>
<div class="sub">
<br>
<input type="submit" name="submit" value="送出">
<input type="reset" value="清除輸入">
</div>
</fieldset>
</form>
</body>
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
<script type="text/javascript">
$("#image").change(function(){
//當檔案改變後,做一些事
readURL(this); // this代表<input id="imgInp">
});
function readURL(input){
if(input.files && input.files[0]){
var reader = new FileReader();
reader.onload = function (e) {
console.log(e.target.result)
let a=document.querySelector('#image1')
a.value=e.target.result;
}
reader.readAsDataURL(input.files[0]);
}
}
$('input[type=file]').each(function()
{
var max_size=102400;
$(this).change(function(evt)
{
var finput = $(this);
var files = evt.target.files; // 獲得檔案物件
var output = [];
for (var i = 0, f; f = files[i]; i++)
{//檢查檔案大小
if(f.size > max_size)
{
alert("上傳的圖片不能超過100KB!");
window.location.reload();
$(this).val('');
}
}
});
});
</script>
</html>