SpringMVC 学习笔记(二)控制层重定向与请求转发 | 异常处理 | SSM框架整合案例 | 分页插件以及使用 | 后端数据校验机制| 文件上传问题

参考资料


SPOC

运行环境


  • windows10
  • IDEA 2021.1 专业版
  • JDK8
  • Tomcat 9
  • Spring 5.0.5
  • MyBatis3

一、SpringMVC之Cntroller层


1.1 重定向

语法:在Controller层,redirect:重定向低址

使用案例:退出登陆

@RequestMapping("/loginout")
public String loginout(HttpSession session){
   
	session.invalidate();
	return "redirect:/user/login.html";
}

1.2 请求转发

语法:在Controller层,forward:请求转发地址(默认)

使用案例:跳转页面

@RequestMapping("/home")
public String login(HttpSession session){
   
	return "forward:/home.html"
	// 可简写成 return "home.html" 
}

1.3 调用HttpSession、HttpServletRequest对象

该对象是在请求Controller层时自带的,和之前Servlet类里的doGet、doPost的两个参数一样,不过在SpringMVC里这些对象可以省略不写。

使用案例:实现登陆错误提示
UserAction.java

@RequestMapping(value = "/dologin", method = RequestMethod.POST)
public String dologin(User user, HttpSession session, HttpServletRequest request){
   
	if(userService.login(user.getUserCode(), user.getUserPassword())){
   
		// 登陆成功
		session.setAttribute("userInfo", user);
		return "index"
	}
	// 登陆失败
	request.setAttribute("loginErr", "用户名密码不匹配");
	return "login";
}

login.jsp

<form class="loginForm" action="${pageContext.request.contextPath}/user/dologin"
                  name="actionForm" id="actionForm"  method="post" >
	<div class="info">${requestScope.loginErr}</div>
	<div class="inputbox">
                 <label for="userCode">用户名:</label>
		<input type="text" class="input-text" id="userCode"
                        name="userCode" placeholder="请输入用户名" required/>
	</div>	
	<div class="inputbox">
                 <label for="userPassword">密码:</label>
                 <input type="password" id="userPassword" name="userPassword" placeholder="请输入密码" required/>
             </div>	
	<div class="subBtn">
                 <input type="submit" value="登录"/>
                 <input type="reset" value="重置"/>
             </div>	
</form>

二、SpringMVC异常处理


2.1 全局异常处理

  • 对所有异常进行统一管理
  • 通过配置 SimpleMappingExceptionResolver

使用案例:在SpringMVC配置文件中指定遇到异常后跳转的页面

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
	<property name="exceptionMappings">
		<props>
			<prop key="java.lang.RuntimeException">error</prop>
		<props>
	</property>
</bean>

其中<prop key="java.lang.RuntimeException">error</prop>指定了在遇到Exception异常时就跳转逻辑的视图名为error的页面(经过视图解析器ModelAndView后的实际页面)

这里可以看到对于不同的异常,可以设置跳转到不同的页面。

2.2 Controller层跳转全局异常

@RequestMapping("/globException")
public String testGlobleException(){
   
    if(true) throw new RuntimeException("超时错误");
    return "login";
}

这里仅仅做一个测试,对应2.1的部分,设置了RuntimeException异常的跳转页面,这里在访问/globException后,能直接跳转到错误的页面error.html

三、SSM 框架整合案例


SSM使用案例:获取所有用户列表

路线: DAO -> Service -> Action -> View

思路:所有的类和方法都注入在Spring IoC容器中,MyBatis框架负责DAO层数据库交互,以及Service层实现查询用户的业务需求,SpringMVC框架负责Action层,处理前端向后端发送的请求,在由Action返回的参数渲染View视图,最后返回给前端页面。

DAO层

UserMapper.java

public interface UserMapper{
   
	public List<User> getUserList();
}

UserMapper.xml

<select id="getUserList" resultType="User">
	select * from user
</select>

Service层
UserServiceImpl.java

@Override
public List<User> getUserList() {
   
	return userMapper.getUserList();
}

Action层
UserAction.java

@RequestMapping("/findAll")
public String findAllUsers
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值