목차
1 주석이 없는 프로세서 매퍼 및 어댑터
1.1 없음 -annotated processor mapper
1.2 주석이 없는 프로세서 어댑터
2.DispatcherServlet.properties
3. 주석이 달린 프로세서 매퍼 및 어댑터
3.1 주석 매퍼 및 어댑터 구성
3.2 주석 핸들러 개발
3.3 스프링 컨테이너의 핸들러 로드
3.4 배포 및 디버깅
4.前端控制器源码分析
5.视图解析器配置前缀和后缀
Java java지도 시간 Spring+SpringMVC+MyBatis 심층학습 및 구축 - SpringMVC 진입 프로그램(2)

Spring+SpringMVC+MyBatis 심층학습 및 구축 - SpringMVC 진입 프로그램(2)

Jun 26, 2017 am 11:12 AM
열셋 공부하다 짓다 깊이 들어가다

재인쇄할 소스를 표시해 주세요:

앞서 언급한 대로: Spring+SpringMVC+MyBatis 심층 학습 및 구성(12) - SpringMVC 진입 프로그램(1)

1 주석이 없는 프로세서 매퍼 및 어댑터

1.1 없음 -annotated processor mapper

앞서 구성한 org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping은 주석이 없는 프로세서 매퍼입니다. 실제로 이런 종류의 매퍼의 문제점은 빈에 URL을 구성해야 한다는 것입니다.

이제 URL과 핸들러를 중앙에서 구성하는 주석이 아닌 또 다른 매퍼

org.springframework.web.servlet.handler.SimpleUrlHandlerMapping을 구성합니다.

    <!-- 配置Handler --><bean id="ItemsController1" name="/queryItems.action" class="joanna.yan.ssm.controller.ItemsController1"/><!-- 配置处理器映射器 
         将bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url)--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><!-- 简单url映射
         simpleUrlHandlerMapping是BeanNameUrlHandlerMapping的增强版,
                  它可以将url和处理器bean的id进行统一映射配置。      -->  <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><!-- 对ItemsController1进行url映射,url是/queryItems1.action  --><prop key="/queryItems1.action">ItemsController1</prop><prop key="/queryItems2.action">ItemsController1</prop></props></property></bean>
로그인 후 복사

질문: 이 두 매퍼를 동시에 구성할 수 있나요?

답변: 여러 매퍼가 공존할 수 있습니다. 프런트 엔드 컨트롤러는 URL이 매핑할 수 있는 매퍼를 결정하고 올바른 매퍼가 이를 처리하도록 합니다.

1.2 주석이 없는 프로세서 어댑터

앞서 구성한 org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter는 주석이 없는 어댑터입니다. 작성하는 핸들러는 컨트롤러 인터페이스를 구현해야 합니다.

주석이 없는 또 다른 어댑터인

org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter에 대해 이야기해 보겠습니다. 작성된 핸들러가 HttpRequestHandler 인터페이스를 구현해야 합니다.

public class ItemsController2 implements HttpRequestHandler{

    @Overridepublic void handleRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//调用service查找数据库,查询商品列表,这里使用静态数据模拟List<Items> itemsList=new ArrayList<Items>();
        Items items_1=new Items();
        items_1.setName("联想笔记本");
        items_1.setPrice(6000f);
        items_1.setDetail("ThinkPad T430 联想笔记本电脑!");
        
        Items items_2 = new Items();
        items_2.setName("苹果手机");
        items_2.setPrice(5000f);
        items_2.setDetail("iphone6苹果手机!");
        
        itemsList.add(items_1);
        itemsList.add(items_2);//设置模型数据request.setAttribute("itemsList", itemsList);//设置转发的视图request.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(request, response);        
//        从上边可以看出此适配器器的handleRequest方法没有返回ModelAndView,可通过response修改定义响应内容,比如返回json数据://        response.setCharacterEncoding("utf-8");//        response.setContentType("application/json;charset=utf-8");//        response.getWriter().write("json串");    }
}
로그인 후 복사

springmvc.xml에 구성됨:

2.DispatcherServlet.properties

프론트 엔드 컨트롤러는 위 파일에서 처리 매퍼, 어댑터, 뷰 리졸버 및 기타 구성 요소를 로드합니다. springmvc.xml에 구성되지 않은 경우 기본 로드된 항목이 사용됩니다.

3. 주석이 달린 프로세서 매퍼 및 어댑터

spring3.1 이전에는 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping 주석 매퍼를 사용하세요.

spring3.1 이후에는 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping 주석 매퍼를 사용하세요.

spring3.1 이전에는 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 주석 어댑터를 사용하세요.

spring3.1 이후에는 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter 주석 어댑터를 사용하세요.

3.1 주석 매퍼 및 어댑터 구성

    <!--注解映射器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/><!--注解适配器 --><bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/><!--使用mvc:annotation-driven代替上边注解映射器和注解适配器 配置
        mvc:annotation-driven默认加载很多的参数绑定方法,
        比如json转换解析器就默认加载了,如果使用mvc:annotation-driven就不用配置上面的RequestMappingHandlerMapping和RequestMappingHandlerAdapter
        实际开发时使用mvc:annotation-driven     --><!-- <mvc:annotation-driven></mvc:annotation-driven> -->
로그인 후 복사

3.2 주석 핸들러 개발

주석이 있는 매퍼 및 어댑터를 사용하세요. (주석이 있는 매퍼와 주석이 달린 어댑터는 쌍으로 사용해야 합니다. 주석이 없는 매퍼는 매핑에 사용할 수 없다는 점을 이해합니다.)

/**
 * 开发注解Handler
 * 使用@Controller标明它是一个控制器
 * @author Joanna.Yan
 * 
 */@Controllerpublic class ItemsController3{    //商品查询列表//@RequestMapping实现对queryItems方法和url进行映射,一个方法对应一个url//一般建议将url和方法名写成一样,方便维护@RequestMapping("/queryItems")public ModelAndView queryItems() throws Exception{//调用service查找数据库,查询商品列表,这里使用静态数据模拟List<Items> itemsList=new ArrayList<Items>();
        Items items_1=new Items();
        items_1.setName("联想笔记本");
        items_1.setPrice(6000f);
        items_1.setDetail("ThinkPad T430 联想笔记本电脑!");
        
        Items items_2 = new Items();
        items_2.setName("苹果手机");
        items_2.setPrice(5000f);
        items_2.setDetail("iphone6苹果手机!");
        
        itemsList.add(items_1);
        itemsList.add(items_2);//返回ModelAndViewModelAndView modelAndView=new ModelAndView();
        modelAndView.addObject("itemsList", itemsList);//指定视图modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");return modelAndView;
    }//定义其它方法//商品添加//商品修改}
로그인 후 복사

3.3 스프링 컨테이너의 핸들러 로드

    <!-- 对于注解的Handler可以单个配置
         实际开发中建议使用组件扫描     --><!-- <bean class="joanna.yan.ssm.controller.ItemsController3" /> --><!-- 可以扫描controller、service、...
         这里让扫描controller,指定controller的包      --><context:component-scan base-package="joanna.yan.ssm.controller"></context:component-scan>
로그인 후 복사

컴포넌트 스캐너를 사용하여 저장 스프링 컨테이너에 로딩이 필요합니다. 각 컨트롤러 클래스를 구성하는 것은 번거롭습니다. @Controller로 표시된 컨트롤 클래스를 자동으로 검색하려면 을 사용하세요.

3.4 배포 및 디버깅

방문: http://localhost:8080/SpringMVC/jyqueryItems.action

참고: 테스트 프로세스 중에 단일 구성 주석 처리기가 실행되는 데 문제가 없습니다. 구성 구성 요소 스캐너가 실행 중이면 Tomcat 오류가 시작됩니다.

严重: Context initialization failed
java.lang.IllegalArgumentException
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:298)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:230)
    at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153)
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:130)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:285)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5266)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5554)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1258)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1918)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
六月 14, 2017 4:43:03 下午 org.apache.catalina.core.ApplicationContext log
严重: StandardWrapper.Throwable
java.lang.IllegalArgumentException
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:298)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:230)
    at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153)
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:130)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:285)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5266)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5554)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1258)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1918)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
六月 14, 2017 4:43:03 下午 org.apache.catalina.core.StandardContext loadOnStartup
严重: Servlet [springmvc] in web application [/SpringMVC] threw load() exception
java.lang.IllegalArgumentException
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.asm.ClassReader.<init>(Unknown Source)
    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80)
    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:298)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
    at org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300)
    at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:230)
    at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153)
    at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:130)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:285)
    at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223)
    at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1087)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5266)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5554)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1258)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1918)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
로그인 후 복사
코드 보기

 

原因是:我的Tomcat的jdk是1.8,项目的jdk版本是1.7,两者不一样造成的。记得要统一版本!

4.前端控制器源码分析

通过前端控制器源码分析springmvc的执行过程。

 第一步:前端控制器接收请求

调用doDispatch

 第二步:前端控制器调用处理器映射器查找Handler

 

第三步:调用处理器适配器执行Handler,得到执行结果ModeAndView

第四步:视图渲染,将model数据填充到request域。

视图解析,得到view:

调用view的渲染方法,将model数据填充到request域。

渲染方法:

5.视图解析器配置前缀和后缀

springmvc.xml中:

    <!-- 配置视图解析器 
         解析jsp视图,默认使用jstl标签,所有classpath下得有jstl的包--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--配置jsp路径的前缀  --><property name="prefix" value="/WEB-INF/jsp/"/><!--配置jsp路径的后缀  --><property name="suffix" value=".jsp"/></bean>
로그인 후 복사

程序中不用指定前缀和后缀:

        //指定视图//        modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");//下边的路径,如果在视图解析器中配置jsp路径的前缀和jsp路径的后缀,修改为modelAndView.setViewName("items/itemsList");
로그인 후 복사


위 내용은 Spring+SpringMVC+MyBatis 심층학습 및 구축 - SpringMVC 진입 프로그램(2)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

C 언어의 매력을 밝히다: 프로그래머의 잠재력을 발견하다 C 언어의 매력을 밝히다: 프로그래머의 잠재력을 발견하다 Feb 24, 2024 pm 11:21 PM

C 언어 학습의 매력: 프로그래머의 잠재력을 여는 것 지속적인 기술 발전으로 컴퓨터 프로그래밍은 많은 주목을 받는 분야가 되었습니다. 많은 프로그래밍 언어 중에서 C 언어는 항상 프로그래머들에게 사랑을 받아 왔습니다. C 언어의 단순성, 효율성 및 폭넓은 적용 덕분에 많은 사람들이 프로그래밍 분야에 입문하는 첫 번째 단계는 C 언어입니다. 이 기사에서는 C 언어 학습의 매력과 C 언어 학습을 통해 프로그래머의 잠재력을 발휘하는 방법에 대해 설명합니다. 우선, C 언어 학습의 매력은 단순함에 있습니다. C언어는 다른 프로그래밍 언어에 비해

Pygame 시작하기: 종합적인 설치 및 구성 튜토리얼 Pygame 시작하기: 종합적인 설치 및 구성 튜토리얼 Feb 19, 2024 pm 10:10 PM

처음부터 Pygame 배우기: 전체 설치 및 구성 튜토리얼, 특정 코드 예제 필요 소개: Pygame은 Python 프로그래밍 언어를 사용하여 개발된 오픈 소스 게임 개발 라이브러리로, 개발자가 다양한 유형을 쉽게 만들 수 있도록 풍부한 기능과 도구를 제공합니다. 게임의. 이 기사는 처음부터 Pygame을 배우는 데 도움이 될 것이며, 완전한 설치 및 구성 튜토리얼과 빠른 시작을 위한 특정 코드 예제를 제공할 것입니다. 1부: Python 및 Pygame 설치 먼저 다음 사항을 확인하세요.

워드에서 근수를 입력하는 방법을 함께 알아볼까요? 워드에서 근수를 입력하는 방법을 함께 알아볼까요? Mar 19, 2024 pm 08:52 PM

Word에서 텍스트 내용을 편집할 때 수식 기호를 입력해야 하는 경우가 있습니다. 어떤 사람들은 Word에서 근수를 입력하는 방법을 모르기 때문에 편집자에게 Word에서 근수를 입력하는 방법에 대한 튜토리얼을 친구들과 공유해달라고 요청했습니다. 그것이 내 친구들에게 도움이 되기를 바랍니다. 먼저 컴퓨터에서 Word 소프트웨어를 연 다음 편집하려는 파일을 열고 루트 기호를 삽입해야 하는 위치로 커서를 이동합니다. 아래 그림 예를 참조하세요. 2. [삽입]을 선택한 후, 기호에서 [수식]을 선택하세요. 아래 그림의 빨간색 원과 같이 3. 아래의 [새 수식 삽입]을 선택하세요. 아래 그림의 빨간색 원과 같이 4. [부수]를 선택한 후 해당 부수를 선택합니다. 아래 그림의 빨간색 원에 표시된 대로:

Go 언어의 주요 기능을 처음부터 배우세요 Go 언어의 주요 기능을 처음부터 배우세요 Mar 27, 2024 pm 05:03 PM

제목: Go 언어의 주요 기능을 처음부터 배우세요. Go 언어는 간단하고 효율적인 프로그래밍 언어로 개발자들이 선호합니다. Go 언어에서 main 함수는 진입 함수이고, 모든 Go 프로그램은 프로그램의 진입점으로 main 함수를 포함해야 합니다. 이 글에서는 Go 언어의 주요 기능을 처음부터 배우는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 먼저 Go 언어 개발 환경을 설치해야 합니다. 공식 홈페이지(https://golang.org)에 접속하시면 됩니다.

Mistlock Kingdom의 야생에서도 건물을 지을 수 있나요? Mistlock Kingdom의 야생에서도 건물을 지을 수 있나요? Mar 07, 2024 pm 08:28 PM

플레이어는 Mistlock 왕국에서 플레이할 때 건물을 짓기 위해 다양한 재료를 수집할 수 있습니다. 많은 플레이어가 야생에서 건물을 지을 수 있는지 알고 싶어합니다. Mistlock 왕국에서는 건물이 제단 범위 내에 있어야 합니다. . Mistlock Kingdom에서는 야생에 건물을 지을 수 있나요? 답변: 아니요. 1. 미스트락 왕국의 야생 지역에는 건물을 지을 수 없습니다. 2. 건물은 제단의 범위 내에서 건축되어야 한다. 3. 플레이어 스스로 Spirit Fire Altar를 설치할 수 있지만, 범위를 벗어나면 건물을 지을 수 없습니다. 4. 산에 직접 구멍을 파서 집으로 삼을 수도 있어 건축자재를 소모할 필요가 없습니다. 5. 플레이어가 직접 지은 건물에는 편안함 메커니즘이 있습니다. 즉, 인테리어가 좋을수록 편안함이 높아집니다. 6. 높은 편안함은 플레이어에게 다음과 같은 속성 보너스를 제공합니다.

20개의 Dune 분석 대시보드를 이해하고 체인의 추세를 빠르게 파악하세요. 20개의 Dune 분석 대시보드를 이해하고 체인의 추세를 빠르게 파악하세요. Mar 13, 2024 am 09:19 AM

원저자: Minty, 암호화 KOL 원본 편집: Shenchao TechFlow 사용법을 알고 있다면 Dune은 올인원 알파 도구입니다. 20개의 Dune 대시보드를 사용하여 연구를 한 단계 더 발전시키세요. 1. TopHolder 분석 @dcfpascal이 개발한 이 간단한 도구는 보유자의 월간 활동, 고유 보유자 수, 지갑 손익 비율과 같은 지표를 기반으로 토큰을 분석할 수 있습니다. 방문 링크: https://dune.com/dcfpascal/token-holders2 토큰 개요 측정항목 @andrewhong5297이 사용자 작업을 분석하여 토큰을 평가하는 방법을 제공하는 이 대시보드를 만들었습니다.

계정 매트릭스를 구축하는 방법은 무엇입니까? 행렬 구성의 기능은 무엇입니까? 계정 매트릭스를 구축하는 방법은 무엇입니까? 행렬 구성의 기능은 무엇입니까? Mar 23, 2024 pm 06:46 PM

오늘날 정보가 풍부한 시대에 소셜 미디어 플랫폼은 사람들이 정보를 얻고 공유하는 주요 수단이 되었습니다. 개인과 기업에게 정보의 최대 전파와 영향력 강화를 위한 효과적인 계정 네트워크 구축은 해결해야 할 시급한 과제가 되었습니다. 1. 계정 매트릭스를 구축하는 방법은 무엇입니까? 1. 타겟 고객을 명확히 합니다. 계정 매트릭스를 구축하기 전에 핵심은 타겟 고객을 명확하게 정의하고 그들의 요구, 관심사 및 소비 습관을 심층적으로 이해하여 보다 타겟화된 콘텐츠 전략을 개발할 수 있다는 것입니다. 2. 적절한 플랫폼을 선택하십시오. 대상 그룹의 특성에 따라 레이아웃에 적합한 소셜 미디어 플랫폼을 선택하십시오. 현재 주류 소셜 미디어 플랫폼에는 Weibo, WeChat, Douyin, Kuaishou 등이 있습니다. 각 플랫폼에는 고유한 사용자 그룹과 커뮤니케이션 특성이 있으므로 실제 상황에 따라 선택해야 합니다.

HTTP 상태 코드 100 자세히 살펴보기: 이는 무엇을 의미합니까? HTTP 상태 코드 100 자세히 살펴보기: 이는 무엇을 의미합니까? Feb 20, 2024 pm 04:15 PM

HTTP 상태 코드 100 자세히 살펴보기: 이는 무엇을 의미합니까? HTTP 프로토콜은 현대 인터넷 애플리케이션에서 가장 일반적으로 사용되는 프로토콜 중 하나이며 브라우저와 웹 서버 간의 통신에 필요한 표준 사양을 정의합니다. HTTP 요청 및 응답 프로세스 중에 서버는 요청 처리를 반영하기 위해 다양한 유형의 상태 코드를 브라우저에 반환합니다. 그 중 HTTP 상태 코드 100은 "계속"을 나타내는 데 사용되는 특수 상태 코드입니다. HTTP 상태 코드는 세 자리 숫자로 구성되며, 각 상태 코드에는 특정한 의미가 있습니다.

See all articles