实训第五天之ssh框架后台代码实现
2017-12-15 15:36
323 查看
实训第五天,学习了ssh框架下的对信息的增删改查和用户的登录。
1、在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。
Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法 是否使用了@RequestMapping 注解。@Controller只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器
2、Controller中 使用@RequestMapping 可以设置访问的路径和方式等属性,通过查看相关文档,RequestMapping中共有六个属性:value, method,consumes,produces,params,headers:
例如:@RequestMapping(value = “queryUser”, method = { RequestMethod.GET })
一个Controller类的源码:
3、mybatis Mapper的配置:
UserMapper接口的定义:
@Mapper注解的componentModel属性:
4、UserMapper.xml:
在mybatis的配置文件中:
使用< resultMap type=”” id=”“>设置结果集的类型和id 例如:
使用< sql >可以标识常用的属性例如:
使用select、insert、delete、update等标签配置对应的行为 属性parameterType为传入参数的类型,resultMap为结果集的id,id为在UserMapper中定义的函数名字,
例如:
注意: 当传进的参数有多个的时候不能通过id = #{id} 的形式进行取值,应用序号的形式进行赋值:account = #{0} and pwd = #{1}
下面为完整的配置源码:
1、在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。
Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法 是否使用了@RequestMapping 注解。@Controller只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器
2、Controller中 使用@RequestMapping 可以设置访问的路径和方式等属性,通过查看相关文档,RequestMapping中共有六个属性:value, method,consumes,produces,params,headers:
1)value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明); 2)method: 指定请求的method类型, GET、POST、PUT、DELETE等;; 3)consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html; 4)produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回; 5)params: 指定request中必须包含某些参数值是,才让该方法处理。 6)headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
例如:@RequestMapping(value = “queryUser”, method = { RequestMethod.GET })
一个Controller类的源码:
package com.iss.controller; import java.util.List; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import com.iss.entity.User; import com.iss.service.UserService; //指定了一个控制器类 @Controller //指定类的访问路径为/user @RequestMapping("/user") public class UserController { /** Spring 2.5 引入了 @Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。*/ @Autowired private UserService userService; //定义queryUser()方法的相对访问路径为queryUser 当在请求的queryUser的时候需要通过/user/queryUser进行访问。/user为类的路径 @RequestMapping(value = "queryUser", method = { RequestMethod.GET }) public ModelAndView queryUser() throws Exception { List<User> userList = userService.findAll(); /** ModelAndView类别就如其名称所示,是代表了MVC Web程序中Model与View的对象, mv.addObject("userList", userList);可以像request一样将数据一起传入跳转的页面中 mv.setViewName("user/list");添加一个响应jsp界面,在return ModelAndView的对象的时候显示 */ ModelAndView mv = new ModelAndView(); mv.addObject("userList", userList); mv.setViewName("user/list"); return mv; } // 编辑 @RequestMapping(value = "editUser", method = { RequestMethod.POST }) public String edit(User user) throws Exception { userService.modify(user); //重定向,将页面重定向到queryUser.action请求 return "redirect:/user/queryUser.action"; } // 编辑ui @RequestMapping("edit") public ModelAndView editUi(Integer id) throws Exception { User user = userService.findById(id); ModelAndView mv = new ModelAndView(); mv.addObject("user", user); mv.setViewName("user/edit2"); return mv; } @RequestMapping(value = "login",method= {RequestMethod.POST}) public String login(@RequestParam("account")String account,@RequestParam("pwd")String pwd,HttpSession session,Model model) throws Exception{ //HttpSession session为了将用户登陆的信息储存在session中,使用session.setAttribute()方法 //Model 使用Model完成对账号密码错误的回显功能,Model对象的使用方法和session对象很相似 List<User> users = userService.findByAccountAndPwd(account, pwd); if(users != null && users.size() ==1) { session.setAttribute("session_user", users.get(0)); return "redirect:/user/queryUser.action"; }else { model.addAttribute("error", "用户名或者密码错误"); model.addAttribute("account", account); return "user/login"; } } }
3、mybatis Mapper的配置:
UserMapper接口的定义:
@Mapper注解的componentModel属性:
componentModel属性用于指定自动生成的接口实现类的组件类型。这个属性支持四个值: default: 这是默认的情况,mapstruct不使用任何组件类型, 可以通过Mappers.getMapper(Class)方式获取自动生成的实例对象。 cdi: the generated mapper is an application-scoped CDI bean and can be retrieved via @Inject spring: 生成的实现类上面会自动添加一个@Component注解,可以通过Spring的 @Autowired方式进行注入 jsr330: 生成的实现类上会添加@javax.inject.Named 和@Singleton注解,可以通过 @Inject注解获取。
package com.iss.mapper; import java.util.List; import org.mybatis.spring.annotation.Mapper; import com.iss.entity.User; @Mapper public interface UserMapper { List<User> selectAll(); void insert(User u); void update(User u); void deleteById(Integer id); User selectById(Integer id); List<User> selectByAccountAndPwd(String account, String pwd); }
4、UserMapper.xml:
在mybatis的配置文件中:
使用< resultMap type=”” id=”“>设置结果集的类型和id 例如:
<resultMap type="com.iss.entity.User" id="BaseResultMap"> <id column="id" property="id" /> <result column="account" property="account" /> <result column="pwd" property="pwd" /> <result column="phoneNumber" property="phoneNumber" /> <result column="email" property="email" /> </resultMap>
使用< sql >可以标识常用的属性例如:
<sql id="Base_Column_List"> id,account,pwd,phoneNumber,email </sql>
使用select、insert、delete、update等标签配置对应的行为 属性parameterType为传入参数的类型,resultMap为结果集的id,id为在UserMapper中定义的函数名字,
例如:
<select id="selectById" parameterType="Integer" resultMap="BaseResultMap"> select <include refid="Base_Column_List"></include> from t_user where id = #{id} </select>
注意: 当传进的参数有多个的时候不能通过id = #{id} 的形式进行取值,应用序号的形式进行赋值:account = #{0} and pwd = #{1}
下面为完整的配置源码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.iss.mapper.UserMapper">
<resultMap type="com.iss.entity.User" id="BaseResultMap">
<id column="id" property="id" />
<result column="account" property="account" />
<result column="pwd" property="pwd" />
<result column="phoneNumber" property="phoneNumber" />
<result column="email" property="email" />
</resultMap>
<sql id="Base_Column_List"> id,account,pwd,phoneNumber,email </sql>
<select id="selectAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from t_user
</select>
<insert id="insert" parameterType="com.iss.entity.User">
insert into t_user
(account,pwd,phoneNumber,email)
values(#{account},#{pwd},#{phoneNumber},#{email})
</insert>
<update id="update" parameterType="com.iss.entity.User">
update t_user set account =
#{account},pwd=#{pwd},phoneNumber=#{phoneNumber},email=#{email} where
id =#{id}
</update>
<!-- 函数名 类型 -->
<delete id="deleteById" parameterType="Integer">
delete from t_user where
id = #{id}
</delete>
<select id="selectById" parameterType="Integer" resultMap="BaseResultMap"> select <include refid="Base_Column_List"></include> from t_user where id = #{id} </select>
<select id="selectByAccountAndPwd" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from t_user
where account = #{0} and pwd = #{1}
</select>
</mapper>
相关文章推荐
- 【Java】SSH框架功能实现 —— 一条功能线代码浅析
- JS调用C#后台代码---JS实现DataGrid“全选”、“反选”、调用后台代码批量删除数据
- php后台多用户权限组思路与实现程序代码
- 在java后台用javacript写一段小代码实现html页面颜色的自动改变
- 用Visual Studio开发web应用程序,自带的.dbo后台数据库如何用代码实现连接
- ASPxGridView 结合CheckBox实现多选(在后台事件代码控制)
- asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)F
- easyUI前后台分页代码实现
- JAVA实现分页(前台页面+后台代码)
- 点击图片,AJAX删除后台图片文件的实现代码(asp.net)
- ASP.NET C# 用后台代码实现 跨域名访问 返回HTML代码
- EasyUI——实现展示后台数据代码
- JS调用C#后台代码---JS实现DataGrid“全选”、“反选”、调用后台代码批量删除数据
- Java运用JSON实现后台与前端分工合作(代码实例)
- Ajax跨域实现代码(后台jsp)
- asp.net 后台cs代码怎么操作前台用ajax实现下拉框进行搜索
- 代码方法jQuery AJAX实现调用页面后台方法和web服务定义的方法
- 如何利用JS实现对后台CS代码的调用