카테고리 없음
2020.06.16
깝돌이
2020. 6. 16. 16:33
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(function(){
$('#ajaxBtn').on('click', function(){
//alert("ajax");
$.ajax({
//alert("ajax2....")---안됨
type:'post',
url:'HelloAjaxServlet',
data:'name=encoreAjax',
dataType:'text',
success:function(data){
alert(data);
}, //callbackk
error:function(error){
alert("응답시간이 지연...Error 처리함!!")
},
timeout:1000//1초동안 서버부터 응답이 없으면 에러 발생시킴...(응답대기시간지정)
});//ajax
});//click
});//ready
</script>
</head>
<body>
<input type="button" id="ajaxBtn" value="ajaxBtn">
</body>
</html>
package servlet.ajax;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/HelloAjaxServlet")
public class HelloAjaxServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
//error 발생할 수 있또록 응답을 지연
/* try {
// Thread.sleep(1000);
}catch(Exception e) {
}*/
String name = request.getParameter("name");
out.print("name:: "+name);
out.close();
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
/*
1. select중에서 특정한 option을 선택하면, 선택한 값을 alert로 출력, 선택하지 않으면, " 선택하세요" alert 출력
2. JqueryAjax부분
- 선수의 이름ㅇ르 선택하면, 서버로 요청을 보냄
- 선수 이름 옆에 그 선수가 사는 주소가 특정 영역에 출력되도록 로직을 작성
*/
var player;
$(function(){
player= $('select').val();
if(player===""){
alert("선수를 선택하세요.");
}
$('select').on('change', function(){
var name = $(this).val();
if(name===""){
alert("선수를 선택하세요.");
return;
}
alert(name);
$.ajax({
type:'post',
url:'AddressAjax',
data:'name='+name,
dataType:'text',
success:function(data){
$('#resultView').html(data);
} //callbackk
});//ajax
});//change
});//ready
</script>
</head>
<body>
<select id="player">
<option value="">====야구 선수들====</option>
<option>이용규</option>
<option>김태균</option>
<option>류현진</option>
<option>푸이그</option>
<option>유리베</option>
<option>커쇼</option>
</select>
<span id="resultView"></span>
</body>
</html>
package servlet.ajax;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/AddressAjax")
public class AddressAjax extends HttpServlet {
private static final long serialVersionUID = 1L;
private HashMap map = new HashMap();
//디비 연결하는 대신에, Map을 이용해서 각 선수들의 address를 연결
@Override
public void init() throws ServletException {
map.put("이용규", "신사동");
map.put("김태균", "용산");
map.put("류현진", "신림동");
map.put("푸이그", "런던");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String name = request.getParameter("name");
PrintWriter out = response.getWriter();
out.print(map.get(name));
}
}
serialize()--->중요!!
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('#frm').on('submit', function(){
//여기서 data를 보내는게 아니라, 다음페이지에서 처리할수 있게, 일괄적으로 data를 모아서(QueryString) 보내는 함수 serialize()
var query = $(this).serialize();
alert(query);
return false;//이러면 걸어놓은 페이지로 안감
})//submit
})//ready
</script>
</head>
<body>
<form action="SerialAjax" id="frm">
NAME<input type="text" name="name">
<input type="hidden" name="command" value="register"></p>
<select name="tool">
<option>EditPlus</option>
<option>Amateras</option>
<option>Workbench</option>
<option>ObjectAid</option>
</select><p>
<input type="checkbox" name="program" value="python">python
<input type="checkbox" name="program" value="Numpy">Numpy
<input type="checkbox" name="program" value="Pandas">Pandas
<input type="checkbox" name="program" value="Matplot">Matplot
<p>
<input type="submit" value="FormDataSend">
</form>
</body>
</html>
json은 비동기에서 주로 쓰이는데, 응답의 data type이 json이다. 바로 객체로 받습니다.
따라서 거의 모든 응답은 json입니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('#json-Btn').on('click', function(){
$.ajax({
type:'post',
url:'JsonAjax',
dataType:'json',
success:function(data){
//alert(data);
$('#resultView').html(data.name+", "+data.age+", "+data.addr);
}//callback
});//ajax
});//click
});//ready
</script>
</head>
<body>
<input type="button" value="json-Btn" id="json-Btn">
<span id = "resultView"></span>
</body>
</html>
package servlet.ajax;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
//json libaray가 필요합니다.
@WebServlet("/JsonAjax")
public class JsonAjax extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
//jsonObject객체를 하나 생성: json.jar가 필요합니다.
JSONObject json = new JSONObject();
json.put("name","json");
json.put("age", 26);
json.put("addr", "Texas");
out.print(json);
}
}
이제 진짜 객체를 만들어서 json에 넣어서 보냅니다.
package domain;
public class Food {
private String maker;
private int price;
public Food() {
super();
}
public Food(String maker, int price) {
super();
this.maker = maker;
this.price = price;
}
public String getMaker() {
return maker;
}
public void setMaker(String maker) {
this.maker = maker;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return "Food [maker=" + maker + ", price=" + price + "]";
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('#json-Btn').on('click', function(){
$.ajax({
type:'post',
url:'JsonAjax',
dataType:'json',
success:function(data){
console.log(data.banana);
$('#resultView').html(data.banana);
}//callback
});//ajax
});//click
});//ready
</script>
</head>
<body>
<input type="button" value="json-Btn" id="json-Btn">
<span id = "resultView"></span>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Java Call</title>
<script src="http://code.jquery.com/jquery-3.1.1.js"></script>
<script type="text/javascript">
$(function() {
$('#exec1').click(function() {
/* 구현 하세요.
입력된 #words 데이터를 가져와 서버에서 요청하고
그 결과를 #result1에 출력하는 코드를 구현하세요
*/
var words = $('#words').val();
$.ajax({
type:'post',
url:'main.do',
data:'action=wordCount&&words='+words,
dataType:'text',
success:function(data){
$('#result1').html(data);
}//callback
});//ajax
});//click
$("#exec2").click(function() {
var fname = $("#fname").val();
/*
입력된 #fname 데이타를 받아와 서버에 요청하고
그 결과를 #result2에 출력하는 코드를 구현하세요
*/
$.ajax({
type:'post',
url:'main.do?action=kickCount',
//data:'action=kickCount&&fname='+fname,
data:{'fname':fname},
dataType:'text',
success:function(data){
$('#result2').html(data);
},//callback
error:function(xhr, status, message){
alert("error: "+message);
}//error
});//ajax
});//click
});//ready
</script>
<style type="text/css">
.quest {
padding: 50px;
width: 500px; height: 250px;
border: 2px dashed blue;
background-color: rgb(234,234,234);
}
.kick{
display: inline-block;
width : 100px;
}
#result1, #result2 {//이부분
font-size : 1.5em;
color: red;
}
.btn{
width : 100px;
}
h2{
height: 50px;
}
div{
margin: 10px;//이부분
}
#ins{
vertical-align: top;
}
</style>
</head>
<body>
<div id="q1" class="quest">
<h2>단어세기</h2>
<div><span id="ins">입력 문자열 : </span><textarea id="words" cols="45" rows="5"></textarea> </div>
<div><input type="button" id="exec1" class="btn" value="실 행"> 가장 많이 나온 단어 : <span id="result1" ></span></div>
</div>
<div id="q2" class="quest">
<h2>Kickboard</h2>
<div><span class="kick">입력 파일명:</span><input type="text" id="fname" ></div>
<div> <input type="button" id="exec2" class="btn" value="실 행"> 갈수 있는 경로의 수 : <span id="result2"> </span></div>
</div>
</body>
</html>
package com.encore;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/main.do")
public class MainServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doProcess(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doProcess(request, response);
}
protected void doProcess(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String action = request.getParameter("action");
System.out.println(action);
// System.out.println(request.getParameter("words"));
if (action.equals("wordCount")) {
wordCount(request, response);
} else if (action.equals("kickCount")) {
kickCount(request, response);
}
}// process()
private void wordCount(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String words = request.getParameter("words");
Count count = new Count();
String result = count.execute(words);
request.setAttribute("result", result);
request.getRequestDispatcher("Result.jsp").forward(request, response);
}
private void kickCount(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String fname = request.getParameter("fname");
System.out.println(fname + "fname");
String path = getServletContext().getRealPath("/res"); // 중요합니다..채워넣어보세요
System.out.println(path);
File f = new File(path, fname);
int result = Kickboard.execute(f);
request.setAttribute("result", result);
request.getRequestDispatcher("Result.jsp").forward(request, response);
}
}
package com.encore;
import java.util.ArrayList;
import java.util.HashMap;
public class Count {
public String execute(String book) {
String word = "";
// 구현하세요.
String[] words = book.split(" ");
HashMap<String, Integer> hm = new HashMap<>();
ArrayList<String> result = new ArrayList<>();
for (int i = 0; i < words.length; i++) {
if (hm.containsKey(words[i].toLowerCase())) {
hm.replace(words[i].toLowerCase(), hm.get(words[i].toLowerCase()) + 1);
} else {
hm.put(words[i].toLowerCase(), 1);
}
}
int max = 0;
for (String key : hm.keySet()) {
if (max < hm.get(key)) {
word = key;
max = hm.get(key);
} else if (max == hm.get(key)) {
if (word.compareTo(key) > 0) {
word = key;
}
}
}
return word;
}
public static void main(String[] args) {
String book1 = "Can Danny and his father outsmart the villainous Mr. Hazell? Danny has a life any boy would love - his home is a gypsy caravan, he's the youngest master car mechanic around, and his best friend is his dad, who never runs out of wonderful stories to tell. But one night Danny discovers a shocking secret that his father has kept hidden for years. ";
String book2 = "Soon Danny finds himself the mastermind behind the most incredible plot ever attempted against nasty Victor Hazell, a wealthy landowner with a bad attitude. Can they pull it off? If so, Danny will truly be the champion of the world.";
String book3 = "I like cat. I like cat. I like cat. ";
Count c = new Count();
System.out.println(c.execute(book1));
System.out.println(c.execute(book2));
System.out.println(c.execute(book3));
}
}
package com.encore;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Kickboard {
static int M;
static int N;
static int[][] map;
static boolean[][] visited;
public static int execute(File path) throws FileNotFoundException {
//Scanner sc = new Scanner(System.in);
Scanner sc = new Scanner(path);
M = sc.nextInt();
N = sc.nextInt();
map = new int[M][N];
memo = new int[M][N];
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++)
map[i][j] = sc.nextInt();
}
visited = new boolean[M][N];
int result = dfs(0,0);
//System.out.println(result);
return result;
}
static int[] dr = { -1, 1, 0, 0 };
static int[] dc = { 0, 0, -1, 1 };
static int[][] memo;
static int cnt = 0;
static int dfs(int r, int c) {
cnt++;
//System.out.println(r + " " + c);
if (r == M-1 && c == N-1)
return 1;
if (memo[r][c] != 0)
return memo[r][c];
if(!visited[r][c]) {
visited[r][c] = true;
for (int i = 0; i < 4; i++) {
int nr = r + dr[i];
int nc = c + dc[i];
if (nr < 0 || nc < 0 || nr >= M || nc >= N)
continue;
if (map[nr][nc] < map[r][c]) {
memo[r][c] += dfs(nr, nc);
}
}
}
return memo[r][c];
}
public static void main(String[] args) throws FileNotFoundException {
System.out.println(execute(new File("input.txt")));
}
}
절대 경로를 통해서 정적인 문서를 배포하는 위치를 확인하는 법
String path=getServletContext().getRealPath("/res");