springMVC框架做项目时遇到的小知识点

1.Spring MVC的指示符:redirect:重定向 forward:转发
return “redirect:/user/login.html”;//url路径
return “frame”;//视图名
2.使用Servlet API对象作为入参:
以HttpServlertSession,对象作为入参取得页面的值:
控制层:annoController.java

public ModelAndView test(@RequestParam(value = "username",required = false) String uname,HttpSession session){
    session.setAttribute("username","tom");
    System.out.println(uname);
    ModelAndView mv=new ModelAndView();
   //跳转数据index与.jsp结合
    mv.setViewName("index");
    return mv;

}

页面:index.jsp

<h1>欢迎${username}hello,SpringMVC!</h1>
<h2>session:${sessionScope.username}</h2>

3.静态资源的引用:
我们通常会把css或js文件等等称为静态资源,静态资源在mvc中核心配置文件中注入:

  <mvc:annotation-driven/>
  <mvc:resources mapping="/statics/**" location="/statics/" />

mvc:resources/标签中
mapping:将静态资源映射到指定的路径下
location:本地静态资源文件所在的目录

4.异常处理,分为全局异常和局部异常,今天我们以RuntimeException为例。
<1>局部异常:在Controller中声明,仅能处理指定Controller中的异常
@ExceptionHandler
示例代码:

@ExceptionHandler(value={RuntimeException.class})
	public String handlerException(RuntimeException e,HttpServletRequest req){
		req.setAttribute("e", e);
		return "login";
	}

<1>全局异常:在mvc配置文件中,对所有异常进行统一处理
配置SimpleMappingExceptionResolver
发生异常时使用对应的视图报告异常

<!--  全局异常处理 -->
	<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
		<property name="exceptionMappings">
			<props>
				<prop key="java.lang.RuntimeException">login</prop>
			</props>
		</property>
	</bean>

其中,java.lang.RuntimeException是我们自定义的异常,login是视图名。

5.@ModelAttribute的用法:
<1>应用到方法上:

@ModelAttribute("user1")
public User addUser(User user) {
	return new User(1,"小明");
}

假设此方法是写在UserController内,那么执行UserController内带有@RequestMapping的方法之前,都会先执行此addUser方法.并且执行addUser过程中会添加两个对象到model,先将key为"user"的对象(由addUser方法的User user引起的),再添加key为"user1"的对象(由注解@ModelAttribute(“user1”)引起的).

<2>应用到方法的参数上:

@RequestMapping("/save")

public String save(@ModelAttribute User user) {
	
user.setUsername("丽华");
	
userService.save(user);

	return "result";

}

此方法会先从model去获取key为"user"的对象,如果获取不到会通过反射实例化一个User对象,再从request里面拿值set到这个对象,然后把这个User对象添加到model(其中ke为"user").使用了@ModelAttribute可修改这个key,不一定是"user",此情况下,用与不用@ModelAttribute没有区别.
<3>同时应用到方法和方法的参数上:即上面两步的两个方法都添加UserController

@ModelAttribute("user1")

public User addUser(User user) {

	return new User(1,"小明");

}

@RequestMapping("/save")

public String save(@ModelAttribute User user) {
	
user.setUsername("丽华");
	
userService.save(user);
	return "result";

}

假设要执行保存用户操作,根据一分析可知,先执行完会产生两个User类型的对象(一个key是"user",另一个key是"user1")添加到model,再执行save方法,此时会先从model去找key为"user"的对象,能找到再从request取值set到这个User对象.最后返回到jsp页面,model里也只有两个User类型对象.再来个小小假设,将上面@ModelAttribute(“user1”)的user1改为user,其它不变.虽然执行了addUser方法,那么执行到save方法内,user对象的字段值还是来源于请求,最后返回到jsp页面,model里也只有一个User类型对象.

6.Spring表单标签:
Spring提供的轻量级标签库,可在JSP页面中渲染HTML元素的标签。
必须在JSP页面的开头处声明taglib指令

<%@ taglib prefix="form"     
         uri="http://www.springframework.org/tags/form" %>

<1>input标签相当于text(输入框组件)
<form:input path=“username”/>

<2>password标签(密码框组件)
<form:password path=“password”/>

<3>hidden标签(隐藏框组件)
<form:hidden path=“id”/>

<4>textarea标签是一个支持多行输入的html元素(多行输入框组件)
<form:textarea path=“remark” rows=“5” cols=“20”/>

<5>checkbox标签(复选框组件)
<form:checkbox path=“courses” value=“javaee” label=“javaee”/>
<form:checkbox path=“courses” value=“mybatis” label=“mybatis”/>

<6>checkboxes
<form:checkboxes items="${courseList}" path=“course”/>

<7>radiobutton标签(单选框组件)
<form:radiobutton path=“sex” value=“男”/>男

<8>radiobuttons标签
<form:radiobuttons path=“sex” items="${sexList}"/>

<9>select标签(下拉列表框组件)
<form:select path=“deptId”>
<form:option value=“1”>财务部</form:option>
</form:select>
<10>form标签(渲染表单元素)
<form:form action=“formTag/form.do” method=“post” commandName=“user”>
</from:from>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值