欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-02 15:20:21
...

(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文件,和之前的方式相同

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

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中一样

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

通过注解 @RequestParam 注解,如下:
  • jsp
    使用注解开发基于SpringMVC的web应用
  • 处理器中的写法:

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

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

使用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
    使用注解开发基于SpringMVC的web应用
  • 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.编写处理器

使用注解开发基于SpringMVC的web应用
b.编写 jsp
使用注解开发基于SpringMVC的web应用

页面传值第二种方式 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);
	}