springMvc
1、概述
- MVC2模式的实现
- 便于灵活处理客户端的请求和响应
- 为以后的动静分离以及分布式的web应用做基础铺垫
- 可以延续spring框架的技术
- 不用考虑spring的版本兼容
- 是跨域(腾讯请求到百度)请求的基础
2、springMVC的核心组件
- DispatcherServlet转发的Servlet
- 配置控制器的文件springmvc-servlet.xml文件
- 视图模型的绑定组件ModelAndView,主要在后台运行
- 使用@RequestMapping设置请求映射的路径
3、开发步骤
-
引入spring组件包
-
注入业务类和控制器类(使用注解注入)
public class UsersAction { @Autowired private UsersBiz usersBiz; public UsersBiz getUsersBiz() { return usersBiz; } public void setUsersBiz(UsersBiz usersBiz) { this.usersBiz = usersBiz; } //method=RequestMethod.POST请求方法 //@RequestBody Users users在参数当中设置,可以省略 @RequestMapping(value="check_Users.do") public String check(HttpServletRequest request,HttpServletResponse response,Users users){ boolean flag = usersBiz.check(users); if(flag){ request.setAttribute("user", users); return "loginok.jsp";//转发数据到login.jsp } return "fail.jsp"; }
-
编写xxx-Servlet.xml文件,扫描注解的控制器组件@Controller
-
在web.xml中配置spring的启动和DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>springmvc</param-name>
<param-value>/WEB-INF/springmvc-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
- 编写jsp页面测试
4、注解:
@Autowired
private UsersBiz usersBiz;
//当引入Biz或者DAO时的自动装配
@Controller
public class UsersAction
@Service
public class UsersBizImp implements UsersBiz
//业务类
@RequestMapping(value="check_Users.do")
public String check
//请求路径check_Users.do
<form action="check_Users.do" method="post">
<!-- name的属性名必须与传递的对象的属性名保持一致,action中check方法的users的属性一致 -->
账号:<input type="text" name="name">
密码:<input type="password" name="pwd">
</form>
//post
@RequestMapping(value="check_Users.do",method=RequestMethod.POST)
public String check
//在这里设置了method那么前端的一定的是用post请求否则就不行,如果没有设置method那么就是按照系统自动
5、注意
-
在springmvc-servlet.xml文件中只是扫描控制器包即可,applicationContext.xml可以不扫描控制器action,但是加上也可以
-
springmvc使用方法参数接收请求的用户数据,例如:请求的url为http://xxx.xxx.xxx/xxx/aa-Aaa.do?id=1, action的方法为
@RequestMapping(value="aa-Aaa.do") public String check(HttpServletRequest request,HttpServletResponse response,int id){
-
请求的参数名称必须和方法的参数名称一致
-
表单元素的名称必须和请求的实体类封装的属性的一致
-
并且前端传输的数据,基本的数据类型可以自动自己转换
-
myeclipse如果将项目从工作空间删除,那么重新启动这个空间之后会出现服务器不能使用的情况
-
注意要扫描所有的包不然会报异常
-
could not initialize proxy - no Session这个异常是与懒加载有关系,如果忘记设置注解模式那么要在xml文件当中配置,如果是注解那么要在注解中配置,懒加载,onetomany和manytoone
-
重定向:
redirect:fail.jsp