之前写的spring代码详解一和二已经将数据层和业务层的代码写的差不多 今天 来编写项目的控制器
首先 我们创建CommonController 使用户打开我们项目 就处于登录页 代码如下:
package com.hoo.Controller;
import java.util.Map;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.portlet.ModelAndView;
@Controller
@Component
public class CommonController {
@RequestMapping("/login")
public ModelAndView login(){
ModelAndView modelAndView=new ModelAndView("login");
return modelAndView;
}
}
@Controller代表这个类是一个控制器
接着 我们创建 UserController 这里来处理登录页面的各种请求 代码如下:
package com.hoo.Controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
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.ResponseBody;
import com.hoo.entity.UserDmo;
import com.hoo.service.UserBiz;
import com.hoo.util.DataUtil;
import com.hoo.util.Message;
import com.hoo.util.UserUtil;
@Controller
@Component
//@RequestMapping它把web请求映射到特定的处理器类和/或处理器方法
//此处/user代表访问时要加上user这一层目录
//例如这个类中 首先我在类名称上加上了"/user" 然后我有在方法上加了"/add" 那么要想访问到addUser这个方法 则页面路径应该填写 http://ip:端口/项目名称/user/add.htm
@RequestMapping("/user")
public class UserController {
@Autowired
private UserBiz userBiz;
@RequestMapping("/add")
//@ResponseBody表示响应的主体。即不需要VIEW展现层模块,直接显示到客户端的内容
@ResponseBody
public Message addUser(UserDmo user,Model model){
user.setUid(UserUtil.getId());
user.setUserType(1);
user.setRegeditTime(DataUtil.getCurrentDate());
user.setRegerees("");
try {
Object upass=userBiz.getUserByUname(user.getUname());
if(upass!=null&&upass.toString().trim().length()>0){
//这里返回对象 页面就可以使用json来进行解析
return new Message(false, "当前注册的用户名已存在,用户注册失败");
}
userBiz.addUser(user);
return new Message(true, "用户注册成功");
} catch (Exception e) {
e.printStackTrace();
return new Message(false, "程序出现错误,用户注册失败");
}
}
@RequestMapping("/login")
public @ResponseBody Message login(@ModelAttribute("user")UserDmo user,HttpSession session){
try {
UserDmo loginUser=userBiz.getUserByUname(user.getUname());
if(loginUser!=null&&loginUser.getUpass().toString().length()>0){
if(loginUser.getUpass().toString().equals(user.getUpass())){
user=loginUser;
session.setAttribute("loginUser",user);
return new Message(true, "登录成功");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return new Message(false, "登录失败");
}
@RequestMapping("/index")
public String getUserList(HttpServletRequest request){
List<UserDmo> userList=userBiz.getUserList();
request.setAttribute("userList", userList);
return "user/list";
}
}
因为我们使用的json 所以需要在spring 的dispatcher中添加如下配置
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=utf-8</value>
</list>
</property>
</bean>
另外 还需要添加jackson-core-asl-1.9.2.jar和jackson-mapper-asl-1.9.2.jar这两个jar包
然后 我们在来创建登录页面 login.ftl 代码如下:
<!DOCTYPE html>
<!--STATUS OK-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>用户登录</title>
<script src="js/jquery.min.js"></script>
<script src="js/jquery.form.js" ></script>
<script>
$().ready(function(){
$('#login').click(function(){
$('#loginForm').ajaxSubmit({
dataType:'json',
success:finishSubmit
});
});
function finishSubmit(data){
if(data.result){
location.href("user/index.htm")
}else{
alert(data.msg);
}
}
});
</script>
</head>
<body>
<form id="loginForm" method="post" action="user/login.htm">
<table border="0" align="center">
<tr>
<th colspan="2" scope="col">用户登录</th>
</tr>
<tr>
<td>用户名:</td>
<td>
<input type="text" name="uname" />
</td>
</tr>
<tr>
<td>用户密码:</td>
<td>
<input type="password" name="upass" />
</td>
</tr>
<tr align="center">
<td colspan="2">
<input id="login" type="button" value="提交" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form>
</body>
</html>
最后 我们在创建显示用户列表的页面 代码如下:
<!DOCTYPE html>
<!--STATUS OK-->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>用户列表</title>
</head>
<body>
<table border="1" align="center" style="text-align:center">
<tr>
<th scope="col">编号</th>
<th scope="col">用户名</th>
<th scope="col">用户密码</th>
<th scope="col">注册时间</th>
<th scope="col">用户类型</th>
</tr>
<#list userList as user>
<tr>
<td>${user.uid}</td>
<td>${user.uname}</td>
<td>${user.upass}</td>
<td>${user.regeditTime}</td>
<td>${user.userType}</td>
</tr>
</#list>
</table>
</body>
</html>
至此 项目编写完毕。最后 附上项目的整体结构和项目的源代码。
项目源码附上 大家自行下载(包含数据库):项目源码