spring mvc 小结-51cto学院Spring MVC
来源:互联网 发布:分期乐网络繁忙 编辑:程序博客网 时间:2024/04/29 14:17
一.Spring MVC 基础
Spring mvc 框架 是一个MVC框架,通过实现MVC很好地将数据、业务、展现进行分离,其底层仍然是servlet
要在web.xml 中配置servlet
Spring MVC 的设计围绕DispatcherServlet 展开的,
由DispatcherServlet负责将请求派发到 特定的handler->controller->modelandview-> vierresolve->view
一定要创建web.xml 文件
spring mvc 框架搭建步骤:
1.创建工程,拷贝spring mvc相关的jar包到lib
2.配置 web.xml,配置前端控制器,DispacherServlet
<!-- 配置 DispacherServlet -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
3.在web-inf 下创建一个spring mvc 的配置文件,文件的命名规则为:[servletname]-servlet.xml
springmvc-servlet.xml
4.配置handlerMapping:根据bean name 来查找对应的Controller(这步可以省略)
<bean class = "org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping" ></bean>
5.创建jsp页面:需要发出请求的页面
6.创建HelloController,继承org.springframework.web.servlet.mvc.AbstractController,
重写handleRequestInternal。
//返回数据和页面
ModelAndView mav = new ModelAndView("index"); //返回的页面
mav.addObject("helloworld","hello: " + hello);
7.配置视图解析器
<!-- 配置视图解析器 :拼接路径-->
<bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value = "/view/" ></property>
<!-- 后缀 -->
<property name="suffix" value = ".jsp"></property>
</bean>
二.HandlerMapping 的三种方式
<!--
1.根据bean name 找到对应的控制器
<bean class = "org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping" ></bean>
<bean name = "/user.do" class = "com.springmvc.controller.UserController"></bean>
-->
<!--2.根据 简单 url来查找 Controller
<bean class = "org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key = "/userInfo.do">UserController</prop>
</props>
</property>
</bean>
<bean id = "UserController" class = "com.springmvc.controller.UserController"></bean>
-->
<!-- 3.根据控制类的类名访问Controller,访问时类名首字母需要小写 -->
<bean class = "org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
<bean class = "com.springmvc.controller.UserController"></bean>
<!-- 配置视图解析器 :拼接路径-->
<bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value = "/" ></property>
<!-- 后缀 -->
<property name="suffix" value = ".jsp"></property>
</bean>
jsp 页面:
<a href = "user.do">根据bean name 访问controller</a><br/>
<a href = "userInfo.do">根据url 访问controller</a><br/>
<a href = "userController.do">根据 Controller 类名访问controller</a><br/>
三.参数传递
请求参数传递:
1.通过设置HTtpServletRequest request,HttpSession,HttpServletResponse 来获取数据
<form action = "user/add.do" method = "get">
账号:<input type = "text" name = "userName"/><br/>
密码:<input type = "password" name = "userPwd"/><br/>
<input type = "submit" value = "提交"/>
</form>
/**
* 传递参数的方法一
* @param request
* @return
*
@RequestMapping(value = "/add.do",method = RequestMethod.GET)
//HttpSession
public String add(HttpServletRequest request){
String userName = request.getParameter("userName");
String userPwd = request.getParameter("userPwd");
System.out.println("用户信息 :用户名" + userName + ", 密码:" +userPwd);
return "userinfo/user_add";
}
2.直接设置参数,例如:
public String add(@RequestParam(value = "userName",defaultValue = "sa")String name,Integer userPwd)
<form action = "user/add.do" method = "get">
账号:<input type = "text" name = "userName"/><br/>
密码:<input type = "password" name = "userPwd"/><br/>
<input type = "submit" value = "提交"/>
</form>
/**
* 传递参数的方法二
* @return
@RequestMapping(value = "/add.do",method = RequestMethod.GET)
//数据多时,可以通过传递对象的方式来传递参数
public String add(String userName,String userPwd){
System.out.println("用户信息 :用户名" + userName + ", 密码:" +userPwd);
return "userinfo/user_add";
}
*/
/**
* 传递参数的方法二
* @RequestParam 给参数取别名
* @return
@RequestMapping(value = "/add.do",method = RequestMethod.GET)
//数据多时,可以通过传递对象的方式来传递参数
//Integer userPwd 会有类型转换的操作
public String add(@RequestParam(value = "userName",defaultValue = "sa")String name,Integer userPwd){
System.out.println("用户信息 :用户名" + name + ", 密码:" +userPwd);
return "userinfo/user_add";
}
*/
3.通过对象
表单的name属性的值必须和类的属性名称一直
/**
* 传递参数的方法三
* @param user
* @return
*/
@RequestMapping(value = "/add3.do",method = RequestMethod.GET)
public String add(UserInfo user){
System.out.println(user.toString());
return "userinfo/user_add";
}
package com.hl.po;
import java.util.Arrays;
public class UserInfo {
private Integer userId;
private String userName;
private String userSex;
private String [] userXq;
public String[] getUserXq() {
return userXq;
}
public void setUserXq(String[] userXq) {
this.userXq = userXq;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserSex() {
return userSex;
}
public void setUserSex(String userSex) {
this.userSex = userSex;
}
@Override
public String toString() {
return "UserInfo [userId=" + userId + ", userName=" + userName
+ ", userSex=" + userSex + ", userXq="
+ Arrays.toString(userXq) + "]";
}
}
<!-- 获取参数的方法3 -->
<form action = "user/add3.do" method = "get">
<!-- 下面这种写法,控制台输出的结果为:UserInfo [userId=null, userName=null, userSex=null]
-->
<!--
编号:<input type = "text" name = "user.userId"/><br/>
姓名:<input type = "password" name = "user.userName"/><br/>
性别:<input type = "text" name = "user.userSex"/><br/>
<input type = "submit" value = "提交"/>
-->
<!-- 下面这种写法获取的结果为:
UserInfo [userId=1, userName=2, userSex=3]
自动根据名称来查找UserInfo类的set方法进行匹配(反射)
表单的name属性的值必须和类的属性名称一直
下面这种写法是正确的写法
-->
编号:<input type = "text" name = "userId"/><br/>
姓名:<input type = "password" name = "userName"/><br/>
性别:<input type = "text" name = "userSex"/><br/>
兴趣爱好:
<input type = "checkbox" name = "userXq" value = "LOL">LOL
<input type = "checkbox" name = "userXq" value = "yingxiong">yingxiong
<input type = "checkbox" name = "userXq" value = "cs">cs
<input type = "submit" value = "提交"/>
</form>
4.类型转换
<!-- 获取时间参数 -->
<form action = "user/add4.do" method = "get">
时间:<input type = "text" name = "userTime"/><br/>
<input type = "submit" value = "提交"/>
</form>
/**
* 获取时间参数
* @param user
* @return
*/
@RequestMapping(value = "/add4.do",method = RequestMethod.GET)
public String add(Date userTime){
System.out.println(userTime);
//输出示例:Thu Feb 03 09:11:00 CST 1994
return "userinfo/user_add";
}
/**
* 时间属性编辑器(自定义的类型转换)
*/
@InitBinder
public void initBinder(ServletRequestDataBinder bin){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:MM:SS");
CustomDateEditor cust = new CustomDateEditor(sdf,true);
bin.registerCustomEditor(Date.class, cust);
}
四.返回页面
- spring mvc 小结-51cto学院Spring MVC
- Spring MVC简单小结
- Spring MVC 小结
- Spring-mvc-jdbc知识点小结
- Spring-mvc-jdbc知识点小结
- Spring MVC中的跳转小结
- Spring Spring mvc mybatis 经验小结(1)
- Spring Spring mvc mybatis 经验小结(2)
- spring-mvc(一)spring-mvc原理小结
- spring mvc
- spring mvc
- spring mvc
- spring,MVC
- Spring MVC
- spring mvc
- Spring-MVC
- Spring MVC
- Spring MVC
- Spring框架启动--Web项目
- forward和redirect
- 第五周项目2——(2)游戏中的角色类
- 欢迎使用CSDN-markdown编辑器
- 字符串最后一个单词的长度
- spring mvc 小结-51cto学院Spring MVC
- [SCU2016年题]有两个已排序的单链表,合并问题
- STL与泛型编程<十一>:Insert(安插)迭代器
- C#网络编程之多线程socket实例
- 把文件的读出值存入到变量中
- 堪称最好的A*算法
- 引水工程 nyoj1239
- QT绘图系统
- BZOJ 4400(tjoi2012 桥-最短路树)