2013-12-19 2 views
0

Ok я получил способ использования нескольких контроллеров, как я хочу, ас-Handlng Контроллеры через диспетчерскую-сервлет

inedx.jsp

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>JSP Page</title> 
</head> 
<body> 
    <a href="hello/One.html">Say Hello One</a><br> 
    <a href="hello/Two.html">Say Hello Two</a><br> 
    <a href="hi/One.html">Say Hi One</a> 

</body> 

диспетчер-servel.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
etc... 

<mvc:annotation-driven/> 
<context:component-scan base-package="com.fastek.crm3" /> 

<mvc:resources mapping="/resources/**" location="/resources/"/> 
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/jsp/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 
</beans> 

Здесь два контроллера и их методы:

@Controller 
@RequestMapping("/hello") 
public class HelloController { 
@RequestMapping(value="/One") 
public ModelAndView sayHello(@ModelAttribute("stdUser") StdUsers stdUser,BindingResult result) { 
    System.out.println("/////called from one-----------"); 
    String mess = "hello from one"; 
    StdCheckAccessV chk = new StdCheckAccessV(); 
    chk.setDFlag(1); 
    stdUser.setChkAccessV(chk); 
    return new ModelAndView(Screens.User, "message", mess); 
} 
@RequestMapping(value="/Two") 
public ModelAndView sayHelloTwo(@ModelAttribute("stdUser") StdUsers stdUser,BindingResult result) { 
    System.out.println("/////called from two-----------"); 
    String mess = "hello from two"; 
    StdCheckAccessV chk = new StdCheckAccessV(); 
    chk.setDFlag(1); 
    stdUser.setChkAccessV(chk); 
    return new ModelAndView(Screens.User, "message", mess); 
} 
} 

и

@Controller 
@RequestMapping("/hi") 
public class OtherController { 

@RequestMapping(value="/One") 
public ModelAndView sayHiOne(@ModelAttribute("stdUser") StdUsers stdUser,BindingResult result) { 
    System.out.println("/////called from hi one-----------"); 
    String mess = "hi from one"; 
    StdCheckAccessV chk = new StdCheckAccessV(); 
    chk.setDFlag(1); 
    stdUser.setChkAccessV(chk); 
    return new ModelAndView(Screens.User, "message", mess); 
} 
} 

Все работает нормально, и как я понял из этого примера соответствующий контроллер и способ будет выполняться для соответствующего URL. Как я рожден для весны, я просто хочу знать, что есть способ контролировать вызов Контролера через диспетчер-сервлет? Я имею в виду то, что мне нужно написать в диспетчер-сервлет, чтобы добиться этого. Пожалуйста, помогите.

+2

Что именно вы подразумеваете под _контролированием вызова Контролера через диспетчер-сервлет? _ –

+0

Вы имеете в виду авторизацию? – Zeus

+0

@Sotirios Delimanolis, сэр, как и в текущей ситуации, контроллер и его метод идентифицируются по шаблону url, отправленному на страницу .jsp, сначала он находит соответствующий контроллер **/hello **, а затем связанные методы, т.е. **/sayHello ** или **/sayHelloTwo **. Итак, есть ли способ сделать это в диспетчере-сервлете, я имею в виду, как я могу решить в диспетчерском сервлете, что этот ** url ** должен использовать этот контроллер и что ** url ** должен использовать другой контроллер и их метод? – Viks

ответ

1

Spring mvc использует шаблон переднего контроллера. Это означает, что весь запрос обрабатывается передним контроллером (Servlet диспетчера), а затем передается вам приложению для их обработки (контроллеры, которые вы написали). Вам не нужно взаимодействовать с диспетчерским сервлетом. Цель состоит в том, чтобы просто направлять запросы на ваши контроллеры. Вы управляете вызовом контроллеров с помощью RequestMapping. enter image description here

Смежные вопросы