Jam's story

[JSP] 입력한 정수만큼의 합을 출력 , 계산기만들기 본문

JSP

[JSP] 입력한 정수만큼의 합을 출력 , 계산기만들기

애플쩀 2022. 6. 19. 20:13

var pattrn=/^\d+$/; //처음부터 끝까지 다 숫자

<form action=""> <!-- action에 안적으면 자기자신페이지 불러옴 -->
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String strNum=request.getParameter("num");
int n;
if(strNum==null){
	n=0;
}else{
	n=Integer.parseInt(strNum);
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="../images/SiSt.ico">
<title>2022. 6. 19.-오후 4:17:04</title>
</head>
<body>
<h3></h3>
<script>
$(document).ready(function(){
	$("input:first").focus().select();
	$("form").submit(function(event){
		var pattrn=/^\d+$/; //처음부터 끝까지 다 숫자 
		if(pattern.test($("#num").val())){
			return;
		}else{
		$("span").text("not valid")
		.css("color","red")
		.show()
		.fadeOut(3000);
		event.preventDefault();
		}
	});
});
</script>
<form action=""> <!-- action에 안적으면 자기자신페이지 불러옴  -->
정수입력:<input type="text" id="num" name="num">
<br>
<span></span>
</form>
<%
int sum=0;
for(int i=1; i<=n; i++){
	if(i==n){
		out.print(i);
	}else{
		out.append(i+"+");
	}
	sum+=i;
}
out.append("="+sum);
%>
</body>
</html>

 

이렇게 바꿀 수 있다. 

<%
if(strNum!=""){ 
	n= Integer.parseInt(strNum);
int sum=0;
for(int i=1; i<=n; i++){
	if(i==n){
%><%= i %><% /
}else{
%><%= i %>+<% 
	}
	sum+=i;
}//for
//out.append("="+sum);
		%>=<%=sum %><%
}	//if
%>
<script> 
       $(":text").first().click(function(event) {     })
       $(":text:first-of-type").click(function(event) {             })
       $(":text").eq(0).click(function(event) {            })
      
       $(":text").last().click(function(event) {        })
       $(":text:nth-of-type(2)").click(function(event) {          })
       $(":text:nth-last-of-type(1)").click(function(event) {     })
       $(":text").eq(1).click(function(event) {        })
       $("form").find(":text").eq(1).click(function(event) {         })
</sript>

 

form 태그가 없다면 ??? 

form태그 안에 입력값들이 있어야 submit 되지만 form태그가 없다면 파라미터 값을 달아서 보내야 한다. 

form 태그없이 a태그를 통해 링크 전달 

 

 

서블릿만들기 

re01.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="../images/SiSt.ico">
<title>2022. 6. 19.-오후 7:49:25</title>
</head>
<body>
<h3></h3>
<script>
$(function(){
	$("form").submit(function(event){
		$(this).attr("action","http://localhost/jspPro/review");
	});
});
</script>
<div>
<form action=""  method="post">
Name:<input type="text"  id="name" name="name" autofocus="autofocus">
<br>
Age:<input type="text" id="age" name="age">
<button type="submit">전송</button>
  </form>
</div>
</body>
</html>

review.java 서블릿 어노테이션 줌 

package prac;

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;

/**
 * Servlet implementation class review
 */
@WebServlet("/review")
public class review extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public review() {
		super();
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	resp.setContentType("text/html; charset=UTF-8");
	PrintWriter out =resp.getWriter();
	out.append("service");
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	/*
	 * protected void doGet(HttpServletRequest request, HttpServletResponse
	 * response) throws ServletException, IOException { // TODO Auto-generated
	 * method stub
	 * response.getWriter().append("Served at: ").append(request.getContextPath());
	 * }
	 * 
	 *//**
		 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
		 *      response)
		 *//*
			 * protected void doPost(HttpServletRequest request, HttpServletResponse
			 * response) throws ServletException, IOException { // TODO Auto-generated
			 * method stub doGet(request, response); }
			 */
}

web.xml을 작성한다면 

<servlet>
  <servlet-name>review</servlet-name>
  <servlet-class>prac.review</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>review</servlet-name>
  <url-pattern>/review</url-pattern>
</servlet-mapping>

 

한글이 깨질때는 

 

request.setCharacterEncoding("UTF-8"); //추가 (읽어올 때 인코딩)
response.setContentType("text/html; charset=UTF-8");

예) 

			protected void doPost(HttpServletRequest request, 
				    HttpServletResponse response) throws ServletException, IOException {
				    
						request.setCharacterEncoding("UTF-8"); //추가 (읽어올 때 인코딩)
						response.setContentType("text/html; charset=UTF-8");
						PrintWriter out = response.getWriter();
						String name = request.getParameter("name");
						int age = Integer.parseInt(request.getParameter("age"));
						
						Date now = new Date();
						out.append(String.format(">name:%s <br> >age:%d <br> >now:%s"
				        	, name, age, now.toLocaleString()));
					}

'JSP' 카테고리의 다른 글

[JSP] 에러처리  (0) 2022.06.20
[JSP] 파라미터 처리하는 메소드  (0) 2022.06.20
[JSP] method "get" 과 "post"의 차이  (0) 2022.06.19
[JSP] 서블릿과 서블릿 맵핑  (0) 2022.06.19
[JSP] 자동 import -> shift+ctrl+o 작동 안할때  (0) 2022.06.19
Comments