1 springmvc 框架
1.1 回顾mvc结构
1.2springmvc的介绍
是一个基于mvc的web层框架,使用spring的一个子项目
在使用springmvc的时候,不用单独和spring进行集成。
2 第一个springmvc的应用
2.1新建web项目
2.2加入jar包
2.3建立Controller
Controller:应用控制器,就是一个普通的javabean
模拟用户登录:
package org.guangsoft.controller; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; public class UserController implements Controller
{ /**
* ModelAndView:对象汇总封装了需要响应到客户端额的数据的视图的页面
*/
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception
{
//获得页面请求数据
String username = request.getParameter("username");
String password = request.getParameter("password"); //创建一个ModelAndView对象,封装了需呀显示的视图和视图上需要显示的数据
ModelAndView mav = new ModelAndView();
if(username.equals("root") && password.equals("root"))
{
//请求转发
mav.setViewName("success.jsp");
mav.addObject("username",username);
}
else
{
mav.setViewName("error.jsp");
mav.addObject("msg", "用户名或密码错误!");
}
return mav;
} }
2.4建立springmvc.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <!-- name是usercontroller请求的url -->
<bean name="/userController.action" class="org.guangsoft.controller.UserController"></bean>
</beans>
2.5在web.xml中配置springmvc的核心控制器
Springmvc的核心控制器是一个servlet
package org.guangsoft.controller; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; public class UserController implements Controller
{ /**
* ModelAndView:对象汇总封装了需要响应到客户端额的数据的视图的页面
*/
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception
{
//获得页面请求数据
String username = request.getParameter("username");
String password = request.getParameter("password");
//床架一个ModelAndView对象,封装了需呀显示的视图和视图上需要显示的数据
ModelAndView mav = new ModelAndView();
if(username.equals("root") && password.equals("root"))
{
//请求转发
mav.setViewName("success.jsp");
mav.addObject("username",username);
}
else
{
mav.setViewName("error.jsp");
mav.addObject("msg", "用户名或密码错误!");
}
return mav;
} }
2.6建立视图页面
建立登陆页面:
建立成功提示页面:
2.7发布测试
3第一个程序问题总结
Springmvc.xml的文件加载问题:
如果不配置,默认/WEB-INF/springmvc-servlet.xml
请求url的问题:
核心控制的路径:/* 会导致jsp页面404错误,要用*.action
4 controller应用控制器的不同实现
Handler的不同实现方式,UserHandler
4.1实现Controller接口
4.2实现HttpRequestHandler
最原始的servlet写法,获得请求参数和进行跳转都是用原始的servletapi。
package org.guangsoft.controller; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.web.HttpRequestHandler;
import org.springframework.web.servlet.ModelAndView; public class UserController2 implements HttpRequestHandler
{ @Override
public void handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//获得页面请求数据
String username = request.getParameter("username");
String password = request.getParameter("password");
if(username.equals("root") && password.equals("root"))
{
//请求转发
request.setAttribute("username", username);
response.sendRedirect("success.jsp");
}
else
{
response.sendRedirect("error.jsp");
}
} }
4.3自定义javabean(重点)
不需要实现任何接口,处理请求的方法自己定义(参数和返回值),配合注解一起使用
4.3.1定义Controller
通过扫描将controller纳入spring容器
package org.guangsoft.controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
public class UserController3
{
/**
* 返回值:stirng表示跳转的路径
* username:接受客户端请求的username
* passowrd:接受客户端请求的password
* model:封装需要响应到客户端的数据
* 参数名称必须和客户端请求的参数名称一致
* @return
*/
@RequestMapping("/userLogin")//客户端请求的url
public String userLogin(String username, String password, Model model)
{
if(username.equals("root") && password.equals("root"))
{
model.addAttribute("username",username);
return "success.jsp";//完成页面的跳转
}
else
{
model.addAttribute("msg", "您的用户名或密码错误!");
return "error.jsp";
}
}
}
4.3.2进行UserController3的配置
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"> <!-- name是usercontroller请求的url -->
<bean name="/userController.action" class="org.guangsoft.controller.UserController"></bean>
<context:component-scan base-package="org.guangsoft.controller"></context:component-scan>
<mvc:annotation-driven></mvc:annotation-driven>
</beans>