关闭

SpringMVC入门(二)

93人阅读 评论(0) 收藏 举报

本项目名称为 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的基本原理与基本操作










   
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5576次
    • 积分:401
    • 等级:
    • 排名:千里之外
    • 原创:30篇
    • 转载:28篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论