使用注解开发基于SpringMVC的web应用

(1).使用注解来开发基于springMVC的web应用

step1. 导包
step2. 添加spring配置文件
step3. 配置 DispatcherServle t控制器

上述步骤和之前一样

step4.编写处理器Controller

编写一个处理器(和之前的方式相比)

  • 1.不用实现Controller接口
  • 2.可以在处理器类中,添加多个方法,每一个方法处理一种类型的请求
  • 3方法名不做要求,返回类型可以是ModelAndView,也可以是String
  • 4.使用 @Controller ,将该处理器纳入容器管理(配置文件中不用在配置处理器了)
  • 5.使用 @RequestMapping,告诉前段控制器(DispatcherServlet),请求路径与处理器的方法的对应关系(配置文件中不用在配置HandlerMapping了)
@Controller
public class Login {
	@RequestMapping("login.do")
	public String loingControler() {
		System.out.println("登陆功能");
		return "login";
	}

}
strp5. 配置jsp文件,和之前的方式相同

在这里插入图片描述

step6. 重新配置springmvc配置文件
  • 配置扫描器
  • 配置Springmvc驱动
  • 配置试图解析器
<!-- 配置扫描器 -->
	<context:component-scan
		base-package="controller"></context:component-scan>
	<!-- 配置mvc驱动 -->
	<mvc:annotation-driven></mvc:annotation-driven>
<!-- 配置地址解析 -->
	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

注意:@RequestMapping 注解也可以添加到类的前面,用法相同

(2).读取请求参数值

通过 HttpRequestServlet 来读取参数值,具体用法和之前jsp中一样

在这里插入图片描述

通过注解 @RequestParam 注解,如下:
  • jsp
    在这里插入图片描述
  • 处理器中的写法:

当获取参数值原jsp中的name属性值与当前定义的接受值得名称不一致 的时候,需要使用 @RequestParam 注解

在这里插入图片描述

使用javabean封装请求参数
  • step1. 写一个java类(必须编写set和get方法)
package controller;

public class AdminParam {
private String username;
private String password;
public String getUsername() {
	return username;
}
public void setUsername(String username) {
	this.username = username;
}
public String getPassword() {
	return password;
}
public void setPassword(String password) {
	this.password = password;
}
@Override
public String toString() {
	return "AdminParam [username=" + username + ", password=" + password + "]";
}

}

  • step2.编写jsp
    在这里插入图片描述
  • step3. 编写处理器

	/**
	 * 第三种传值方式
	 *将请求参数封装成一个javaBean的方式
	 * @param req
	 * @return
	 */
	@RequestMapping("/toLogin3.do")
	public  String  toLogin3(AdminParam ap) {
		/*
		 * ModelAndView有两个构造器
		 * (1)MoDelAndView(String viewName)
		 * viewName是视图名
		 * (2)MoDelAndView(String viewName,Map data),Map用于封装处理的结果
		 */


		System.out.println("name:"+ap.getUsername()+";pw:"+ap.getPassword());
		return "success";
	}

(3).使用页面传值

第一种方式 request
a.编写处理器

在这里插入图片描述
b.编写 jsp
在这里插入图片描述

页面传值第二种方式 ModelAndView

将数据先锋装到ModelAndView对象里面,然后将该对象作为方法的返回值

/**
 * 向页面传值的第二种方式
 * @param ap
 * @param request
 * @return
 */
@RequestMapping("/toLogin5.do")
public  ModelAndView  toLogin5(AdminParam ap) {

	String username=ap.getUsername();
	String password=ap.getPassword();

	//构造ModelMap对象

	HashMap<String, Object> data = new HashMap<String ,Object>();
	//	相当于:request.setAttribute("username", username);
	data.put("username", username);
	//构造ModelAndView对象
	ModelAndView mav = new ModelAndView("index");//index即jsp文件

	System.out.println("login5--"+"name:"+ap.getUsername()+";pw:"+ap.getPassword());
	//SpringMVC默认使用转发
	return mav;
}
第三种使用ModelMap
/**
	 * 想页面传值的第三种方式
	 * 使用ModelMap
	 * @param ap
	 * @return
	 */
	@RequestMapping("/toLogin6.do")
	public  String  toLogin6(AdminParam ap,ModelMap mm) {

		String username=ap.getUsername();
		String password=ap.getPassword();

		System.out.println("login6--"+"name:"+ap.getUsername()+";pw:"+ap.getPassword());
		//相当于request.setAttribute()
		mm.addAttribute("username",username);
		//SpringMVC默认使用转发
		return "index";
	}
第四种,使用session
/**
	 * 向页面传值的第四种方式
	 * 通过session
	 * @param ap
	 * @param mm
	 * @return
	 */
	@RequestMapping("/toLogin7.do")
	public  String  toLogin7(AdminParam ap,HttpSession session) {

		String username=ap.getUsername();
		String password=ap.getPassword();

		System.out.println("login6--"+"name:"+ap.getUsername()+";pw:"+ap.getPassword());
		//相当于request.setAttribute()
		session.setAttribute("username", username);
		//SpringMVC默认使用转发
		return "index";
	}

(4).重定向

如果方法的返回值是String

c `return “redirect:toIndex.do”;`

如下,让最后跳转到index界面时的地址发生变化

@RequestMapping("/index.do")
	public String loingControler() {
		System.out.println("登陆功能");
		return "login";
	}
@RequestMapping("/toLogin8.do")
	public  String  toLogin8(AdminParam ap,HttpSession session) {
		System.out.println("login8()");
		return "redirect:toIndex.do";
	}

	@RequestMapping("toIndex.do")
	public String toIndex() {
		System.out.println("toIndex()");
		return "index";
	}
如果方法的返回值是ModelAndView

RedirectView rv = new RedirectView(“toIndex.do”); return new
ModelAndView(rv);

@RequestMapping("/toLogin9.do")
	public  ModelAndView  toLogin9(AdminParam ad,HttpSession session) {
		String username=ad.getUsername();
		session.setAttribute("usernme", username);
		System.out.println("login9()");
		RedirectView rv = new RedirectView("toIndex.do");
		return new ModelAndView(rv);
	}

猜你喜欢

转载自blog.csdn.net/qq_43050077/article/details/103230877
今日推荐