项目结构:
1.person.java
package com.dx.pojo;
public class Person {
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 "Person [username=" + username + ", password=" + password + "]";
}
}
2.HelloWorldController.java
package com.dx.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import com.dx.pojo.Person;
/*
* 控制器
*/
@Controller
//用注解方式往会话中存储数据
@SessionAttributes({"DxSession","name"})
public class HelloWorldController {
@RequestMapping(value = "/hello")
public String hello(){
return "hello";
}
/*
* 利用作用域HttpServletRequest,HttpServletResponse传值。
*/
@RequestMapping(value = "/test1")
public String test1(HttpServletRequest request,HttpServletResponse response){
String name="小米";
request.setAttribute("name", name);
return "test";
}
/*
* 利用@RequestParam(value = "")来获取值,其中value的值与参数名相同
*/
@RequestMapping(value = "/test2")
public String test2(@RequestParam(value = "username")String username){
System.out.println(username);
return "test";
}
/*
* 将表单元素直接封装为一个对象,传给后台(对象成员名与表单name要相对应)
*/
@RequestMapping(value = "/test3")
public String test3(Person person){
System.out.println(person);
return "test";
}
/*
* 通过Model将数据传给前台
*/
@RequestMapping(value = "/test4")
public String test4(Person person,Model model){
model.addAttribute("person", person);
return "test";
}
/*
* 通过@ModelAttribute将封装对象传给前台,默认情况下(不指定名时)获取是名是对象类第一个字母小写,如${person}而不是${per}
*/
@RequestMapping(value = "/test5")
public String test5(@ModelAttribute Person per){
return "test";
}
/*
* 通过HttpSession往会话中添加参数
*/
@RequestMapping(value = "/test6")
public String test6(HttpSession session){
session.setAttribute("session1", "session1");
return "test";
}
/*
* 在request作用域中存数据同时,也在session中存储数据
*/
@RequestMapping(value = "/test7")
public String test7(Person per,Model model,SessionStatus status){
model.addAttribute("DxSession",per);
model.addAttribute("name","张三");
//清除当前controller应用到的session。
status.setComplete();
return "test";
}
/*
* 利用ModelAndView传值,当传值是对象时,key默认为对象类名,首字母小写
* 值为集合时,key默认为集合存储类型+List,同理首字母小写
* 值是String时,key是string,当同时存储多个string时(默认key),后面的值会覆盖前面的值。
*/
@RequestMapping(value = "/test8")
public ModelAndView test8(Person per){
ModelAndView mv = new ModelAndView();
mv.setViewName("test");
mv.addObject("person", per);
mv.addObject("Hello World!");
String[] str = {"武汉","南京"};
mv.addObject(Arrays.asList(str));
return mv;
}
/*
* 通过@ResponseBody将返回值最为文本返回(相当与ajax交互或者servlet中的out.print()函数)
*/
@RequestMapping(value = "/test9")
@ResponseBody
public String test9(){
return "hello world!!欢迎";
}
}
3.index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>index.jsp</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!-- css -->
<style type="text/css">
*{margin:0px;padding:0px;}
body{font-family:"微软雅黑";background:#111;}
.box{width:300px;height:200px;margin:180px auto;text-align:center;color:white;}
.txt{outline:none;border:none;text-indent:5px;letter-spacing:2px;height:20px;}
#submit{margin-top:12px;margin-left:35px;width:180px;border:none;
border-radius:5px;cursor:pointer;background:#e2d9d9;transition:1s;}
#submit:hover{background:#888080;transition:1s;color:white}
</style>
<!-- js -->
<script type="text/javascript">
/* 当点击文本框时,文本框旋转 */
function trans(f){
f.style.transform = "rotate("+360+"deg)";
}
</script>
</head>
<body>
<div class="box">
<form action="test7" method="post">
<p>
姓名:<input type="text" class="txt" style="transform:rotate(0deg);transition:1s;" name="username" οnclick="trans(this)"/>
</p>
<p>
密码:<input type="password" class="txt" style="transform:rotate(0deg);transition:1s;" name="password" οnclick="trans(this)"/>
</p>
<p>
<input type="submit" value="提交" id="submit"/>
</p>
</form>
</div>
</body>
</html>
4.test.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test.jsp</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
${name }
<hr>
${person }
<hr>
从session中获取:${sessionScope.session1 }
<hr>
从session中获取:${sessionScope.DxSession }
从session中获取:${sessionScope.name}
<hr>
${string }
<hr>
<!-- jsp标签 -->
<c:forEach items="${stringList }" var="item">
${item },
</c:forEach>
</body>
</html>