Daily Codig Reminder
parameter
char1ie
2024. 2. 12. 15:56
initparam/multi
initparam
web.xml에 경로 변경시
servlet-context.xml 자리 변경
<param-value>/WEB-INF/appservlet-context.xml</param-value>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/appservlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
multi
bean 생성
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean class="com.controller.FirstController" id="xxx"></bean>
<bean class="com.controller.SecondController" id="yyy"></bean>
</beans>
@Controller
public class SecondController {
public SecondController() {
super();
System.out.println(" 요청");
}
@RequestMapping("/kkk2" )//get, post 둘다 처리
public String kkk() {//servlet과 동일
System.out.println("/kkk2 요청");
return "hello2";//응답요청을 할 jsp 파일이름 test.jsp
}
}
@Controller
public class FirstController {
public FirstController() {
super();
System.out.println(" 요청");
}
@RequestMapping("/kkk" )//get, post 둘다 처리
public String kkk() {//servlet과 동일
System.out.println("/kkk 요청");
return "hello";//응답요청을 할 jsp 파일이름 test.jsp
}
}
multi2
controller 2개 각각
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean class="com.controller.FirstController" id="xxx"></bean>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean class="com.controller.SecondController" id="yyy"></bean>
</beans>
param에 추가
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml
/WEB-INF/spring/appServlet/servlet-context2.xml</param-value>
</init-param>
multi3
second
http://localhost:8010/app/second/kkk
@Controller
@RequestMapping("/second")
public class SecondController {
public SecondController() {
super();
System.out.println(" 요청");
}
@RequestMapping("/kkk" )// /second/kkk
public String kkk() {//servlet과 동일
System.out.println("/kkk2 요청");
return "hello2";//응답요청을 할 jsp 파일이름 test.jsp
}
@RequestMapping("/kkk2" )// /second/kkk
public String kkk2() {//servlet과 동일
System.out.println("/kkk2 요청");
return "hello2";//응답요청을 할 jsp 파일이름 test.jsp
}
}
first
http://localhost:8010/app/first/kkk
@Controller
@RequestMapping("/first")
public class FirstController {
public FirstController() {
super();
System.out.println(" 요청");
}
@RequestMapping("/kkk" )//get, post 둘다 처리
public String kkk() {//servlet과 동일
System.out.println("/kkk 요청");
return "hello";//응답요청을 할 jsp 파일이름 test.jsp
}
}
@RequestMapping_method
main
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class TestController {
public TestController() {
super();
System.out.println(" 요청");
}
@RequestMapping(value="/login" , method = RequestMethod.GET )//get, post 둘다 처리
public String loginForm() {//servlet과 동일
System.out.println("/loginForm 요청");
return "loginForm";//응답요청을 할 jsp 파일이름 test.jsp
}
@RequestMapping(value="/login" , method = RequestMethod.POST )//get, post 둘다 처리
public String login() {//servlet과 동일
System.out.println("/login 요청");
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
@RequestMapping("/main" )//get, post 둘다 처리
public String main() {//servlet과 동일
System.out.println("/main 요청");
return "main";//응답요청을 할 jsp 파일이름 test.jsp
}
}
loginForm
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
loginForm.jsp
</h1>
<form action="login" method="post">
post<br>
id: <input type="text" name="username" required="required"><br>
password: <input type="text" name="password" required="required"><br>
<input type="submit" value="submit">
</form>
<hr>
<form action="login" method="get">
get<br>
id: <input type="text" name="username" required="required"><br>
password: <input type="text" name="password" required="required"><br>
<input type="submit" value="submit">
</form>
</body>
</html>
main
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
main.jsp
</h1>
<a href="login">loginForm</a>
</body>
</html>
login
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
logined
</h1>
</body>
</html>
http://localhost:8011/user/login?kkk=c
@Controller
public class TestController {
@RequestMapping("/" )
public String main() {
System.out.println("/TestController 요청");
return "login";
}
@RequestMapping(value = "/login", params = "aaa=bbb" )
public String loginForm() {
System.out.println("/TestController aaa=bbb 요청");
return "login";
}
@RequestMapping(value = "/login", params = "aaa=ccc" )
public String login() {
System.out.println("/TestController aaa=ccc 요청");
return "login";
}
@RequestMapping(value = "/login", params = "xxx" )
public String login2() {
System.out.println("/TestController xxx=아무값 요청");
return "login";
}
@RequestMapping(value = "/login",method = RequestMethod.GET, params = "kkk=b" )
public String x() {
System.out.println("/TestController kkk=b");
return "login";
}
@RequestMapping(value = "/login",method = RequestMethod.GET, params = "kkk=c" )
public String y() {
System.out.println("/TestController.y kkk=c");
return "login";
}
@RequestMapping("/hello")
public class HelloController {
public HelloController() {
super();
System.out.println("HelloController");
}
@RequestMapping( "/login")
public String login() {
System.out.println("/login 요청");
return "login";
}
@RequestMapping("/test")
public class TestController {
public TestController() {
super();
System.out.println("TestController");
}
@RequestMapping( "/login")
public String login() {
System.out.println("/ test/login 요청");
return "login";
}
@RequestMapping( "/main")
public String main() {
System.out.println("/ test/main 요청");
return "main";
}
경로 중요!!!!!!!!!!!!!!! ❗❗❗❗❗❗❗❗❗❗
<h1>
main.jsp
</h1>
<a href="login">login</a><br>
<a href="../hello/login">login2</a><br>
<a href="/userapp/hello/login">login3</a><br>
<a href="<%=request.getContextPath() %>/hello/login">Hello/login</a>
config_initParam
bean
<!-- view부분에 대한 경로와 .jsp 설정하는 InternalResourceViewResolver-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<bean id="service" class="com.controller.TestService"></bean>
<bean id="person" class="com.controller.Person">
<constructor-arg name="name" value="홍길동"></constructor-arg>
<constructor-arg name="age" value="10"></constructor-arg>
</bean>
<bean id="xxx" class="com.controller.TestController">
<!-- <property name="person" ref="person"></property>
<property name="service" ref="service"></property> -->
</bean>
service
package com.controller;
public class TestService {
public String xx() {
return "TestService";
}
}
person
package com.controller;
public class Person {
String name;
int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
testController
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class TestController {
TestService service;
Person person;
//
public TestController() {
System.out.println("TestController 기본생성자 호출 ");
service= new TestService();
person= new Person("홍길동", 10);
}
//http://localhost:8090/app1/xxx
@RequestMapping(value = "/xxx", method = RequestMethod.GET)
public String sayEcho() {
System.out.println("/xxx 주소 요청==============");
System.out.println(person);
System.out.println(service.xx());
// Person p = new Person("홍길동", 10);
// System.out.println(p);
// TestService serivce= new TestService();
// System.out.println(serivce.xx());
return "login";//login.jsp
}
@RequestMapping(value = "/xxx", method = RequestMethod.POST)
public String sayEcho2() {
System.out.println("/xxx2 주소 요청==============");
Person p = new Person("홍길동", 10);
System.out.println(p);
TestService serivce2= new TestService();
System.out.println(serivce2.xx());
return "main";//login.jsp
}
//
// public TestService getService() {
// return service;
// }
//
// public void setService(TestService service) {
// this.service = service;
// }
// public Person getPerson() {
// return person;
// }
// public void setPerson(Person person) {
// this.person = person;
// }
}
/xxx 요청
Person [name=홍길동, age=10]
TestService /xxx2 요청
Person [name=홍길동, age=10]
TestService
1 ⇒get set 만 있음
@Controller
public class TestController {
private TestService service;
private Person person;
@RequestMapping("/xxx" )//get, post 둘다 처리
public String xxx() {//servlet과 동일
System.out.println("/xxx 요청");
System.out.println(person);
System.out.println(service.xx());
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
@RequestMapping("/xxx2" )//get, post 둘다 처리
public String xxx2() {//servlet과 동일
System.out.println("/xxx2 요청");
System.out.println(person);
System.out.println(service.xx());
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
public TestService getService() {
return service;
}
public void setService(TestService service) {
this.service = service;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean id="service" class="com.controller.TestService"></bean>
<bean id="person" class="com.controller.Person">
<constructor-arg name="name" value="홍길동"></constructor-arg>
<constructor-arg name="age" value="10"></constructor-arg>
</bean>
<bean id="xxx" class="com.controller.TestController">
<property name="person" ref="person"></property>
<property name="service" ref="service"></property>
</bean>
2⇒Autowired
@Controller
public class TestController {
@Autowired
TestService service;
@Autowired
Person person;
//http://localhost:8090/app1/xxx
@RequestMapping(value = "/xxx")
public String sayEcho() {
System.out.println(service.xx()+"\t"+person.toString());
return "login";
}
public TestService getService() {
return service;
}
public void setService(TestService service) {
this.service = service;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
<context:annotation-config></context:annotation-config><!-- ////////// -->
<!-- view부분에 대한 경로와 .jsp 설정하는 InternalResourceViewResolver-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<bean id="service" class="com.controller.TestService"></bean>
<bean id="person" class="com.controller.Person">
<constructor-arg name="name" value="홍길동"></constructor-arg>
<constructor-arg name="age" value="10"></constructor-arg>
</bean>
<bean id="xxx" class="com.controller.TestController">
<!-- <property name="person" ref="person"></property>
<property name="service" ref="service"></property> -->
</bean>
3⇒ servlet-context/ root-context 나누기
servlet
<context:annotation-config></context:annotation-config><!-- ////////// -->
<!-- view부분에 대한 경로와 .jsp 설정하는 InternalResourceViewResolver-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- <bean id="service" class="com.controller.TestService"></bean>
<bean id="person" class="com.controller.Person">
<constructor-arg name="name" value="홍길동"></constructor-arg>
<constructor-arg name="age" value="10"></constructor-arg>
</bean> -->
<bean id="xxx" class="com.controller.TestController">
<!-- <property name="person" ref="person"></property>
<property name="service" ref="service"></property> -->
</bean>
root
<bean id="service" class="com.controller.TestService"></bean>
<bean id="person" class="com.controller.Person">
<constructor-arg name="name" value="홍길동"></constructor-arg>
<constructor-arg name="age" value="10"></constructor-arg>
</bean>
controller 같음
parameter 별이 다섯개 🌟🌟🌟🌟🌟
package com.controller;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.dto.LoginDTO;
@Controller
public class TestController {
@RequestMapping(value = "/login", method = RequestMethod.GET )//get, post 둘다 처리
public String login() {//servlet과 동일
System.out.println("/login요청");
return "loginForm";//응답요청을 할 jsp 파일이름 test.jsp
}
//dto
@RequestMapping(value = "/login", method = RequestMethod.POST )//get, post 둘다 처리
public String login1(LoginDTO dto) {//servlet과 동일
System.out.println("/login post"+dto);
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
//데이터 1개만 받기
@RequestMapping(value = "/login7")//get, post 둘다 처리
public String login7(HttpServletRequest request) {//servlet과 동일
String id = request.getParameter("userid");
String pw = request.getParameter("passwd");
System.out.println("/login7"+id+" : "+pw);
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
//loginForm.jsp 수정 login2
@RequestMapping(value = "/login2")//get, post 둘다 처리
public String login2(@RequestParam("userid") String id,
@RequestParam("passwd") String pw) {//servlet과 동일
System.out.println("@RequestParam(\"userid\")" +id+
"@RequestParam(\"passwd\")" +(pw+100));
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
@RequestMapping(value = "/login2_1")//get, post 둘다 처리
public String login2_1(@RequestParam("userid") String id,
@RequestParam("passwd") int pw) {//형변환자동
System.out.println("@RequestParam(\"userid\")" +id+
"@RequestParam(\"passwd\")" +(pw+100));
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
//form 에서의 name 거ㅏ 매개변수 name 같게 사용
@RequestMapping(value = "/login3")//get, post 둘다 처리
public String login3(@RequestParam String userid,
@RequestParam int passwd) {//형변환자동
System.out.println("@RequestParam userid" +userid+
"@RequestParam passwd" +(passwd+100));
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
//form 에서의 name 거ㅏ 매개변수 name 같게 사용
@RequestMapping(value = "/login4")//get, post 둘다 처리
public String login4(String userid, int passwd) {//형변환자동
System.out.println("userid" +userid+
"passwd" +passwd);
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
//form 에서의 name 거ㅏ 매개변수 name 같게 사용
@RequestMapping(value = "/login5")//get, post 둘다 처리
public String login5(@RequestParam(required = false, defaultValue = "홍길동")
String userid, int passwd) {//형변환자동
System.out.println("userid" +userid+
"passwd" +passwd);
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
//form 에서의 name 거ㅏ 매개변수 name 같게 사용 error
@RequestMapping(value = "/login5_1")//get, post 둘다 처리
public String login5_1(@RequestParam
String userid, int passwd) {//형변환자동
System.out.println("userid" +userid+
"passwd" +passwd);
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
@RequestMapping(value = "/login6")//get, post 둘다 처리
public String login6(@RequestParam Map<String, String> m){//형변환자동
System.out.println("Map<String, String> "+ m);
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
//@RequestParam 안쓰면 error
@RequestMapping(value = "/login6_1")//get, post 둘다 처리
public String login6_1( Map<String, String> m){//형변환자동
System.out.println("Map<String, String> "+ m);
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
@RequestMapping(value = "/login7")//get, post 둘다 처리
public String login7( Map<String, String> m){//형변환자동
System.out.println("Map<String, String> "+ m);
return "login";//응답요청을 할 jsp 파일이름 test.jsp
}
}