溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Controller怎么配置

發(fā)布時間:2022-01-19 16:30:02 來源:億速云 閱讀:149 作者:iii 欄目:開發(fā)技術

本篇內容介紹了“Controller怎么配置”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Controller是MVC中的控制部分,主要的功能是接收客戶端提交的請求,然后調用Service的功能及獲取數據,最后返回View(視圖,即JSP或freemarker頁面)。

在Jspxcms中,Controller分為前臺和后臺。前臺是普通用戶瀏覽的頁面,使用freemarker作為視圖,通常不需要登錄,比如網站首頁、欄目頁、專題頁、搜索頁等;后臺一般為管理功能,使用JSP作為視圖,需要管理員登錄后臺并且有相應權限,才能訪問。

后臺Controller配置

/src/main/resources/conf/plugin/plug/backend.xml

符合classpath:conf/**/backend*.xml這個規(guī)則的文件會加載為后臺Controller的配置文件。

<context:component-scan base-package="com.jspxcms.plug.web.back" use-default-filters="false">
  <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
  <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
</context:component-scan>

這個配置會自動加載com.jspxcms.plug.web.back包下所有帶有Controller或ControllerAdvice注解的類。

后臺Controller返回JSP頁面,JSP路徑的前后綴分別為/WEB-INF/views/、.jsp,相應的配置文件是/src/main/resources/application.properties。

# 后臺JSP地址前綴
spring.mvc.view.prefix=/WEB-INF/views/
# 后臺JSP地址后綴
spring.mvc.view.suffix=.jsp

后臺Controller類

后臺訪問地址以/cmscp為根路徑,@RequestMapping("/plug/resume")和@RequestMapping("list.do")配置的最終訪問地址為/cmscp/plug/resume/list.do。

/cmscp路徑由com.jspxcms.core.Application中的new ServletRegistrationBean(backendDispatcherServlet(), "/cmscp/*");代碼設定。

后臺Controller返回JSP頁面,如plug/resume/resume_list,加上前后綴,實際文件地址為/WEB-INF/views/plug/resume/resume_list.jsp

package com.jspxcms.plug.web.back;

@Controller
@RequestMapping("/plug/resume")
public class ResumeController {
    @RequiresPermissions("plug:resume:list")
    @RequestMapping("list.do")
    public String list(...) {
        ...
        return "plug/resume/resume_list";
    }

    @RequiresPermissions("plug:resume:create")
    @RequestMapping("create.do")
    public String create(...) {
        ...
        return "plug/resume/resume_form";
    }
    ...
}

前臺Controller配置

com.jspxcms.plug.ContextConfig中的@ComponentScan({"com.jspxcms.plug.web.fore" })會加載com.jspxcms.plug.web.fore包中的@Controller類。

前臺Controller返回的視圖是FreeMarker,有關FreeMarker的配置在src/main/resources/context.xml。

其中templateLoaderPath是模板存儲路徑,也就是模板前綴,默認為/template。

<!-- FreeMarker -->
<bean id="freeMarkerViewResolver" class="com.jspxcms.common.freemarker.MyFreeMarkerViewResolver">
  <property name="contentType" value="text/html; charset=UTF-8"/>
  <property name="cacheUnresolved" value="false"/>
  <property name="redirectHttp10Compatible" value="false"/>
</bean>
<!-- <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> -->
<bean id="freemarkerConfig" class="com.jspxcms.common.freemarker.AdapterFreeMarkerConfigurer">
  <property name="freemarkerVariables" value="#{propertiesHelper.getBeanMap('freemarkerVariables.')}"/>
  <property name="templateLoaderPath" value="${templateStorePath}"/>
  <property name="freemarkerSettings">
    <props>
      <prop key="tag_syntax">square_bracket</prop>
      <prop key="template_update_delay">${freemarkerConfig.template_update_delay}</prop>
      <prop key="defaultEncoding">UTF-8</prop>
      <prop key="url_escaping_charset">UTF-8</prop>
      <prop key="localized_lookup">false</prop>
      <prop key="locale">zh_CN</prop>
      <prop key="boolean_format">true,false</prop>
      <prop key="datetime_format">yyyy-MM-dd'T'HH:mm:ss</prop>
      <prop key="date_format">yyyy-MM-dd</prop>
      <prop key="time_format">HH:mm:ss</prop>
      <prop key="number_format">0.###</prop>
      <prop key="whitespace_stripping">true</prop>
      <prop key="auto_import">/spring.ftl as s</prop>
    </props>
  </property>
</bean>

前臺Controller類

前臺訪問地址直接以網站根路徑為相對路徑,@RequestMapping(value = "/resume")配置的訪問地址就為/resume。

前臺返回的FreeMarker模板路徑,一般返回當前站點的模板路徑,如/1/default/plug_resume.html,加上模板前綴,實際地址是/template/1/default/plug_resume.html;
也可以是任意值,如:/abc/def.html,加上模板前綴,實際地址為/template/abc/def.html。

package com.jspxcms.plug.web.fore;

@Controller
public class ResumeController {

    public static final String TEMPLATE = "plug_resume.html";

    @RequestMapping(value = "/resume")
    public String form(HttpServletRequest request, org.springframework.ui.Model modelMap) {
    ...
    // 將通用對象放到modelMap里,如ctx dy user site global等
        Map<String, Object> data = modelMap.asMap();
        ForeContext.setData(data, request);
    // 獲得當前站點對象
        Site site = Context.getCurrentSite();
    // 返回當前站點模板路徑。如:/1/default/plug_resume.html。加上模板前綴,實際地址是 /template/1/default/plug_resume.html
        return site.getTemplate(TEMPLATE);
    }

    @RequestMapping(value = "/resume", method = RequestMethod.POST)
    public String submit(...) {
    ...
    }
}

“Controller怎么配置”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI