spring mvc代码详解 三

来源:互联网 发布:淘宝的体验中心在哪里 编辑:程序博客网 时间:2024/05/22 01:37

之前写的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@Componentpublic 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>


至此 项目编写完毕。最后 附上项目的整体结构和项目的源代码。

 

 项目源码附上 大家自行下载(包含数据库):项目源码


 


 

原创粉丝点击