• SSH整合知识点


    好长时间没用java了,现在再看ssh ,有点陌生。这里将ssh整合的知识点列出来,提醒自己。

    1.实体类上的注解。 hibernate的注解。

    @Entity 注解将一个类声明为实体 Bean ;@Table 为实体Bean指定对应数据库表中的名字;@Id 注解可将实体Bean中某个属性定义为主键;使用@GenerateValue注解可以定义该标识符的生成策略。 

    @Entity
    @Table(name="t_user")
    public class User {
        private  int id;
        private  String name;
        private  String password;
        private  String  email;
            
        @Id
        @GeneratedValue
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
    .......
    )

    2.action类上的注解。spring的注解。

    @@Component注解 (不推荐使用),类上加上一个@Component注解,就将该类定义为一个Bean了。Spring还提供了更加细化的注解形式:@Repository、@Service、@Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean。目前版本(2.5)中,这些注解与@Component的语义是一样的,完全通用,在Spring以后的版本中可能会给它们追加更多的语义。我们推荐使用@Repository、@Service、@Controller来替代@Component。 

    spring 共有4种“组件”式注解
    @Component:可装载组件
    @Repository:持久层组件
    @Service:服务层组件
    @Controller:控制层组件

    @Scope("prototype")  struts的action拖给spring管了,写上这样一句后,每次请求都会重新创建一个action。

    @Resource(这个注解属于J2EE的),默认安装名称进行装配,不用重新new对象。名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。

    @Resource注解在字段上,这样就不用写setter方法了,并且这个注解是属于J2EE的,减少了与spring的耦合。这样代码看起就比较优雅。

    把service的接口(注意不要是service的实现类)注入到action中。这里的name名称是 Class  UserServicesImpl 中定义的组件名称。

    @Component("login")
    @Scope("prototype")
    public class LoginAction extends ActionSupport implements ModelDriven{
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private UserRegisterInfo info = new UserRegisterInfo();
        private UserService us;
        
        public UserService getUs(){
            return us;
        }
        @Resource(name="userService")
        public void setUs(UserService us) {
            this.us = us;
        }
        
        
        @Override
        public String execute() throws Exception {
            User user=new User();
            user.setName(info.getName());
            user.setPassword(info.getPassword());
            HttpServletRequest request = ServletActionContext.getRequest();    
        
            if (us.validate(user)){
                request.setAttribute("name", info.getName());
                System.out.println(request.getAttribute("name"));
                System.out.println("login success");
                return   "success";
            }
            else {
                request.setAttribute("name", info.getName());
                System.out.println(us.validate(user)+"--");
                request.setAttribute("name", null);
                return  "error";
            }
        }

    下面的代码是利用@Resource将userdao装配到UserServiceImpl这个类中,然后就可以里就可以利用 userdao了。这里的名称就是userdao。在类UserDaoImpl中定义的组件名称为 @Component("userdao"),正好相同,所以这里面的@Resource后面可以不加名称。

    @Component("userService")
    public class UserServiceImpl implements UserService {
    
    private UserDao userdao; 
        
        public UserDao getUserdao() {
            return userdao;
        }
       @Resource
        public void setUserdao(UserDao userdao) {
            this.userdao = userdao;
        }        
        public  void  add(User user) throws Exception{
            userdao.save(user);
        }
        public  boolean exits(User user) throws Exception{
            return userdao.exits(user.getName());
        }
        public boolean validate(User user) throws Exception {
            return userdao.validate(user);
        }        
    }
    在路上...
  • 相关阅读:
    tp5.1 多级控制器
    JS中三个点(...)是什么鬼?
    vue reqwest与fetch的使用
    new Vue({ render: h => h(App), }).$mount('#app')到底什么意思
    ant design vue 表格和国际化的使用
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
  • 原文地址:https://www.cnblogs.com/chenkaiadd/p/3189897.html
Copyright © 2020-2023  润新知