SpringMVC入门(二)

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










1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.m或d论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 、1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值