라벨이 Web Programming인 게시물 표시

HTMLInputElement.files를 리셋하는 방법

  input[type=file,multiple] 요소가 있고, 파일이 선택될 때마다(onchange) 큐에 파일을 쌓고 input 요소는 초기화해야 하는 경우가 생겼습니다.   처음엔 HTMLFormElelment.reset()으로 해결을 할까 했는데, 그렇게 되면 다른 폼 구성요소들도 모두 초기화가 되기 때문에 안 되겠더라고요.   그래서 혹시나 하고 input 요소의 value를 ""(empty string)으로 설정하니 files 필드 역시 비워지는 것을 확인 했습니다.   즉, value를 비워버리면 files 필드 역시 비워진다는 의미입니다. 생각보다 간단하죠? 저도 그래서 놀랬습니다.

ASP.NET IFormFile 패러미터에 항상 null이 넘어온다면 고려해야 할 것

  <form>  엘리먼트의 enctype 이 multipart/form-data 로 지정되었는지 확인하고, 안 되어있다면 해당 값으로 변경.   TagHelper를 사용해도 마찬가지.  기본값은 enctype이 지정되지 않으므로 htmlAttributes 에 new { enctype = "multipart/form-data" } 를 넘길 것.

[IntelliJ] Spring 재시작 없이 리로드(Hot-swap)하기!

스프링 핫스왑   IntelliJ를 사용하면서 불편한 점이 하나 있었습니다. 방금 전까지요. 바로 js, css, html, jsp 등등 정적 리소스는 수정하고 On Frame Deactivation 이벤트에 지정한 대로 자동으로 리로드가 되는데, Controller, Service, Repository, Mapper 등등은 알아서 리로드가 되지 않는 것이었죠.   근데, 제가 회사에서 일 할 때의 기억으론 이클립스 사용시 컨트롤러 역시 핫스왑이 되었던 것 같은데, 왜 IntelliJ에선 안 되지? 하고 생각하게 되었습니다. 얼마 지나지 않아, 안 되는 게 아니라 못 찾은 것 뿐일 거라는 생각이 들어 찾아봤습니다.   역시 답은 금방 나오더군요. 컨트롤러, 리포지토리, 서비스 모두 핫스왑!   방법은 Maven과 Gradle이 다릅니다. 따지고 들어가 보면 같은 원리긴 하지만... 아무튼 설명 들어갑니다.   메이븐 사용시: <plugin> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-maven-plugin </artifactId> <dependencies> <dependency> <groupId> org.springframework </groupId> <artifactId> springloaded </artifactId> <version> 1.2.6.RELEASE </version> </dependency> </dependencies> </plugin>   그래들 사용시: ...

[HTML/CSS] CSS만 사용해서 텍스트 드래그 방지하는 방법

드래그 방지의 필요성?   많은 분께서 드래그 방지 하면 불펌방지 를 떠올리실 거라 생각합니다. 하지만, 사실상 불펌방지는 드래그 방지만으로 막을 수 있는 것이 아닐 뿐더러, 애초에 불펌방지라는 말 자체가 이상하기도 합니다. 누구나 볼 수 있으며 정보 공유를 목적으로 하는 블로그에서 불펌방지라니...   아무튼, 제가 이 글을 쓰는 목적은 쓸데없는 드래그로 의도한 디자인이 망쳐지는 경우 를 방지하기 위함입니다. 예를 들어, 사이드메뉴를 예쁘게 만들어 색상 조합도 완벽하게 디자인해놨는데 메뉴를 클릭하다 실수로 드래그라도 하면 영 보기 좋지 않은 색상으로 드래그된 채 색상 조합이 다 망쳐지게 되죠. 바로 이럴 때 드래그 방지를 하면 됩니다. 드래그 방지 방법. CSS만으로!   매-우 간단합니다. user-select 혹은 touch-callout 프로퍼티를 none으로 설정하면 됩니다.  -webkit-touch-callout: none; user-select: none; -moz-user-select: none; -ms-user-select: none; -webkit-user-select: none;   해당 CSS가 적용된 엘리먼트는 이제 드래그를 할 수 없게 됩니다. 참 쉽죠?

[Spring MVC RESTful] RESTful URL패턴 사용하며 css, js, img 등 리소스는 default 서블릿에 할당하는 방법

  Spring RESTful을 사용하기 위해 을 / 로 지정하고 다 잘 돌아가는 듯 싶었으나 /css, /js, /img 디렉터리에서 로딩을 하지 못 한다면? 하나하나  @RequestMapping 으로 지정하는 것도 방법이 될 수 있겠으나, 더 간단하게 web.xml에서 해결하는 방법이 있었다. <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/spring/context-*.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> <url-pattern>...

IntelliJ IDEA에서 GlassFish 개발 환경 세팅하기

이미지
me>  우선 GlassFish 다운로드 및 사용방법 기초 에서 글래스피시를 설치하고 오시기 바랍니다.   IntelliJ IDEA에서 글래스피시 개발환경 구축   IntelliJ는 제가 정말 좋아하는 IDE입니다. 개발자의 편의를 고려한 매우 유용한 기능들이 많거든요. 이번엔 그 기능을 맘껏 활용해 아주 빠르고 간단하게 글래스피시 개발환경을 구축해보도록 하겠습니다. 프로젝트 생성   우선 당연히 새 프로젝트를 생성해야겠죠? Create New Project를 눌러주세요.   그리고 Java/JavaEE/Web Application/WebServices 를 선택한 뒤, Version을 GlassFish가 들어간 것으로 바꿔 주세요.   Configure 버튼을 누르고 ... 버튼을 눌러 GlassFish가 설치된 홈 디렉토리를 선택 해줍니다. 이렇게 하면 글래스피시 라이브러리가 최신으로 유지됩니다.    만약 최신 버전이 아닌 특정 버전을 사용하고 싶다면 Download가 아닌 기존 라이브러리를 사용하는 Use Library 옵션을 선택해주세요.   이제 실행 및 디버그 세팅을 해줘야합니다. GlassFish Server/Local 을 추가해주세요.   Application Server 옆의 Configure를 눌러 설치된 GlassFish의 홈 디렉터리를 선택 해주시고, Server Domain은 기본값(domain1) 또는 설정한 값 을 넣어주시고, 어드민 패스워드를 설정했다면 Password에 어드민 비밀번호 를 넣어주세요.   그러면 화면 하단에 오류와 Fix 버튼이 나타날 겁니다. 모두 수정될 때까지 Fix를 눌러주시면 IDE가 알아서 아티팩트 추가하고, Debug 세팅까지 해줍니다.  IntelliJ 만세.   끝입니다. 이제 개발하고 Shift...

GlassFish 다운로드 및 사용 방법 기초

이미지
  Tomcat보다 빠르고 기능도 많고 API 활용도 쉬운 GlassFish 기초 사용 방법 을 알려드리겠습니다. 다운로드   GlassFish 메인 페이지 로 이동 하셔서 Download  링크를 누르신 뒤, Java EE # Full Platform 을 받아주세요.   그 뒤, 원하는 디렉터리에 압축을 풀어주세요.   다운로드 및 사용 준비가 끝났습니다. 참 쉽죠? 사용하기   이제 GlassFish를 사용하는 단계가 남았습니다. 다운로드만큼 간단하죠.   GlassFish 홈 디렉토리 안의 bin 폴더 를 관리자 권한으로 실행된 명령 프롬프트 또는 파워쉘 로 들어가주세요.   asadmin start-domain  명령어로 서버를 시작합니다.    그럼 이렇게 몇 초 동안 시작 중이라는 메세지가 뜨고,   관리용 포트 4848, 주 포트 8080 으로 기본값 서버가 실행되게 됩니다.   이 상태에서 http://localhost:8080 으로 접속해보시면 초기의 GlassFish index.html 파일이 보일 겁니다. 저는 수정을 했기 때문에 아무 것도 없는 빈 페이지가 뜹니다.   기본 html 파일은 GlassFish 홈 디렉토리/glassfish/domains/도메인명(기본: domain1)/docroot 폴더에 있습니다. 종료하기   종료는 마찬가지로 관리자 권한으로 실행된 명령 프롬프트에서 asadmin stop-domain 을 입력하시면 됩니다.