SpringMVC入门(二)

原创 2017年01月03日 20:35:18

本项目名称为 springMVC01,以下为大致的目录结构图


一、编写UserController

@Controller  
@RequestMapping(value="/user")  
public class UserController {  
  
}  

二、用户信息展示

2.1 在UserController中编写一个已有用户信息userList展示页面
	@RequestMapping(value="/list",method=RequestMethod.GET)
	public String list(Model model){
		model.addAttribute("userList",userList);
		return "/user/userList";
	}


2.2 在user/page/下编写userList.jsp,展示信息
由于springMVC的标签库不如struts2强大,引入JSTL--->jstl.jar standard.jar
并且在jsp页面中插入:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
代码如下:
  <body>
  =====用户列表=====<br/>
  	<c:forEach items="${userList}" var="ul">
  		ID: ${ul.value.id}---用户名:${ul.value.userName}---密码:${ul.value.password}<br/>
  		<a href="user/${ul.value.id }/view">查看<a/>--<a href="user/${ul.value.id }/update">修改<a/>--<a href="user/${ul.value.id }/delete">删除<a/><br/>
  	</c:forEach>
  	<a href="user/add">添加用户</a>
  	当前用户:${user.userName}
  </body>

2.3 解决页面显示post中的乱码问题
2.3.1在web.xml配置<filter>

<filter>
  	<filter-name>encoding</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>encoding</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>


三、用户登录

3.1 在WebRoot下编写login.jsp
 <body>
    <form action="user/login" method="post" >
    	账号:<input type="text" name="userName"/><br/>
    	密码:<input type="password" name="password"/><br/>
    		<input type="submit" value="提交"/><br/>
    </form>
  </body>

3.2 在UserController中编写用户登录的方法
@RequestMapping(value="/login",method=RequestMethod.POST)
public String login(@RequestParam String userName,@RequestParam String password,HttpSession session){

boolean flag=false;

//遍历map,跟map中的user进行比对
for(User user:userList.values()){
if(userName.equals(user.getUserName()) && password.equals(user.getPassword())){

//登录成功后,将user信息保存到session中,在页面中显示
session.setAttribute("user", user);
flag=true;
break;
}
}

//假如登录的用户名或密码错误,抛出一个自定义的RuntimeException
//定义一个局部异常处理,抛出异常后,跳转到loginError.jsp
if(!flag){
throw new UserException("用户名或密码错误!");
}

//如果return的是一个逻辑视图名/user/list,该user信息无法显示在页面
//springMVC会自动解析redirect,带着session中的user信息重定向到用户展示页面
return "redirect:/user/list";
}

3.3 在异常包中编写异常类

3.4 在UserController中编写局部异常处理方法
//局部异常处理,只针对某一个controller,value属性是一个数组,可以适用多种错误信息
@ExceptionHandler(value={UserException.class})
public String handlerException(UserException exception,HttpServletRequest request){
request.setAttribute("exception", exception);
//编写loginError.jsp,一个错误展示页面
return "user/loginError";
}

四、增加用户

4.1 userList.jsp页面中增加a标签
<a href="user/add">添加用户</a>

4.2 在UserController中编写user/add的映射方法
//点击页面的添加用户按钮,跳转到新增用户界面
@RequestMapping(value="/add",method=RequestMethod.GET)
public String add(Model model){
//注册的表单将会生成一个User对象,需在model里存入一个空的User对象传到注册界面,接收新的User
model.addAttribute("user",new User());
return "user/add";
}
4.3 编写user/add.jsp
引入springMVC特有的表单: <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
使用JSR303进行简单的表单验证:导包(hibernate-validator-4.3.0.Final、jboss-logging-3.1.0.GA、validation-api-1.1.0.Alpha1)

<body>
<!-- modelAttribute指的是进入该方法时model传入的属性是一个User,controller中需要传参 -->
<form:form action="/user/add" modelAttribute="user" method="post">
ID:<form:input path="id"/><br/>
用户名:<form:input path="userName"/><form:errors path="userName"/><br/>
密码:<form:password path="password"/><form:errors path="password"/><br/>
<input type="submit" value="提交"/>
</form:form>
</body>

4.4 验证对象里加入验证信息
@NotEmpty(message="用户名不能为空")
public String getUserName() {
return userName;
}

@Size(min=4,max=10,message="密码长度在4-6位之间")
public String getPassword() {
return password;
}

4.5在UserController中编写表单提交的映射方法
@RequestMapping(value="/add",method=RequestMethod.POST)
public String addUser(@Validated User user,BindingResult bindingResult){
//如果使用JSR303进行验证,需在要验证的对象前加上@Validated,并且紧跟BindingResult bindingResult
//判断验证结果是否有错误,若有错回到注册用户界面
if(bindingResult.hasErrors()){
return "user/add";
}
//如果验证无误,则将对象存入map中,重新发送请求redirect才能显示最新信息
userList.put(user.getId(), user);
return "redirect:/user/list";
}

五、删除用户

5.1 userList.jsp页面中增加a标签
<a href="user/${ul.value.id }/delete">删除<a/>

5.2 在UserController中编写user/{id}/delete的映射方法
/@RequestMapping(value="/{id}/delete",method=RequestMethod.GET)
public String delete(@PathVariable String id){
userList.remove(id);
return "redirect:/user/list";
}

六、修改用户信息

6.1 userList.jsp页面中增加a标签
<a href="user/${ul.value.id }/update">修改<a/>
6.2 在UserController中编写a标签路径映射方法
@RequestMapping(value="/{id}/update",method=RequestMethod.GET)
public String update(@PathVariable String id,Model model){
model.addAttribute(userList.get(id));
return "user/userUpdate";
}
6.3 编写userUpdate.jsp
<body>
<form:form modelAttribute="user" method="post" action="/user/${user.id}/update">
ID:${user.id }<br/>
用户名:<form:input  path="userName" /><form:errors path="userName"/><br/><br/>
密码:<form:input path="password" /><form:errors path="password"/><br/>
<input type="submit" value="提交"/>
</form:form>
</body>

6.4 在UserController中编写表单提交地址的映射方法
@RequestMapping(value="/{id}/update",method=RequestMethod.POST)
public String userUpdate(@PathVariable String id,User user){
userList.put(id, user);
return "redirect:/user/list";
}

七、查看用户详细信息

7.1 userList.jsp页面中增加a标签
<a href="user/${ul.value.id }/view">查看<a/>
6.2 在UserController中编写a标签路径映射方法
@RequestMapping(value="/{id}/view",method=RequestMethod.GET)
public String userView(@PathVariable String id,Model model){

model.addAttribute(userList.get(id));
return "user/userView";
}
6.3 编写userView.jsp
<body>
---用户个人信息---<br/>
用户ID:${user.id}<br/>
用户账号:${user.userName}<br/>
用户密码:${user.password}<br/>
</body>



这是一个简单的DEMO,用来学习springMVC的基本原理与基本操作










                    
版权声明:本文为博主原创文章,未经博主允许不得转载。

Spring MVC入门第1天--框架说明与快速入门

springmvc框架 springmvc业务流程框架 springmvc框架组件说明 Spring MVC入门程序 配置前端控制器 配置处理器适配器 开发Handler 视图编写 配置Handler...
  • lutianfeiml
  • lutianfeiml
  • 2016年06月30日 22:16
  • 4764

SpringMVC 基础教程 简单入门实例

Spring MVC 入门教程二: 一个简单的入门实例教程 该实例的源码和实例中的jar 源码:http://download.csdn.net/detail/swingpyzf/5348563 所需...
  • SwingPyzf
  • SwingPyzf
  • 2013年05月09日 13:44
  • 186266

springMVC注解入门

1.依赖、web.xml、cpf.jsp     和不使用注解方式完全一样 2.my-servlet.xml
  • cpf2016
  • cpf2016
  • 2015年06月22日 22:21
  • 304

SpringMVC入门学习(一) 环境搭建+实例演示

简单介绍SpringMVC       SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherSe...
  • hejingyuan6
  • hejingyuan6
  • 2014年12月03日 08:20
  • 10599

SpringMVC入门笔记(二)

之前的博客里,我们通过一个入门的案例程序,大致了解了SpringMVC的执行过程。这里,我们先对其进行一个小小的总结(补充)。 处理器映射器 BeanNameUrlHandlerMapping...
  • qq_32971807
  • qq_32971807
  • 2016年10月31日 14:37
  • 298

springMVC入门(二)

在springMVC入门(一)中applicationContext.xml没有设置任何的bean节点,该文件是用来设置控制器路由映射的。...
  • buyueliuying
  • buyueliuying
  • 2017年11月25日 10:21
  • 54

SpringMVC入门示例(二)

在本例中,我们将使用Spring MVC框架构建一个入门级web应用程序。Spring MVC 是Spring框架最重要的的模块之一。它以强大的Spring IoC容器为基础,并充分利用容器的特性来简...
  • zzzxzzv
  • zzzxzzv
  • 2016年03月08日 19:27
  • 282

SpringMVC从入门到精通(二)

Spring MVCSpring MVC数据类型转换Spring3引入了更加通用的类型转换系统,其定义了SPI接口(Converter等)和相应的运行时执行类型转换的API(ConversionSer...
  • zfcsdn2017
  • zfcsdn2017
  • 2017年12月19日 09:18
  • 37

树莓派入门(二)

1、树莓派启动方式及支持的系统: 树莓派开发板没有配置板载FLASH,因为它支持SD卡启动,所有我们需要下载相应镜像,并将其烧写在SD上,启动系统即可 (这个镜像里包含了我们通常所说的...
  • frank_wu
  • frank_wu
  • 2015年11月22日 23:32
  • 1455

遗传算法入门到掌握(二)

遗传算法引擎――GenAlg           [cpp] view plaincopy "font-size:16px;">/遗传算法   class GenAlg     ...
  • u013007900
  • u013007900
  • 2015年02月05日 09:48
  • 1391
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SpringMVC入门(二)
举报原因:
原因补充:

(最多只允许输入30个字)