您的位置:首页 > 编程语言 > Java开发

springmvc(2)

2016-04-06 21:42 447 查看
在web.xml中启动自定义的springmvc框架:

<servlet>

<servlet-name>springmvc</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/classes/springmvc.xml</param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>springmvc</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

在springmvc.xml中配置视图解析器:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="viewClass“

value="org.springframework.web.servlet.view.JstlView">

</property>

<property name="prefix" value="/"></property>
加前缀

<property name="suffix" value=".jsp"></property> 加后缀

</bean>

开启springmvc注解

<mvc:annotation-driven />

开启自动扫描

<context:component-scan base-package="com.lovo.mvc">

<!-- 制定扫描规则,要求springmvc上下文内部,只包含WEB层的Bean组件 -->

<context:include-filter type="annotation"

expression="org.springframework.stereotype.Controller"/>

<context:exclude-filter type="annotation"

expression="org.springframework.stereotype.Service"/>

<context:exclude-filter type="annotation"

expression="org.springframework.stereotype.Repository"/>

</context:component-scan>

映射处理器可以不用配置会默认使用BeanNameUrlHandlerMapping组件

java类的方法

@Controller

public class ToLoginController {

@RequestMapping("/toLogin")

//@RequestMapping告知该方法是针对/toLogin请求的处理方法

public String jump(){

return "login";

//返回的字符串被当做ViewName

}

}

@Controller

@RequestMapping("/test")

public class ToLoginController {

@RequestMapping("/toLogin")

public String jump(){

return "login";

}

}

此时代表请求该方法的路径是:/test/toLogin.jsp

请求处理方法可以接受的参数:

1、HttpServletRequest,HttpServletResponse,HttpSession

2、表单提交数据,若表单数据的name值和参数名一样,可以直接书写,若不一样需要映射:

public String login(

@RequestParam("username")String name,

@RequestParam("password")String pwd){

System.out.println(name)

return null;

}

3、表单数据封装的bean对象,条件是bean对象的属性名和提交的name属性一模一样:

public String login(UserBean user){

System.out.println(user.getUsername());

return null;

}

4、map对象,放入到map中的数据可以同步到request作用域,可以在返回的视图页面中用EL表达式取得,和request放入值一样,页面可以通过EL表达式获取值:

public String login(Map map){

map.put("msg", "good job");

return "success";

}

5、PrintWriter作为参数,一般情况下返回值为空,因为print方法就已经返回了数据了,不能再次返回:

public void login(PrintWriter out){

out.print("hellow world");

}

请求处理方法可以返回的值:

1、void作为返回类型,一般用在out直接输出

2、String作为返回类型,如果返回非空字符串,则使用返回值作为viewName;如果返回空,则根据默认规则返回默认页面(规则如void)。如果要进行重定向或者请求转发,并且跳转的可能是另外一个控制器,那么返回如下字符串来实现:

return "forward:/****.spring" – 请求转发

return "redirect:/*****.spring" – 重定向

需要注意的是请求转发和重定向的地址前都需要"/"符号

3、Map作为返回类型:

public Map login(){

Map map = new HashMap();

map.put("msg", "good job");

return map;

}

根据默认规则返回默认页面(规则如void)。可以在页面上用EL表达式显示数据(${msg})。

4、ModeAndView作为返回类型:

public ModelAndView login(UserBean user){

ModelAndView mav = new ModelAndView();

if(us.checkLogin(user)){

mav.setViewName("success");

mav.addObject("GirlName", "FRJJ");

}else{

mav.setViewName("login");

}

return mav;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: