创建springmvc src文件和jsp文件

来源:互联网 发布:mac录屏如何录制声音 编辑:程序博客网 时间:2024/06/01 12:53

package com.sxt.po;

 

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

 

@Entity

public class User {

    @Id

    @GeneratedValue(strategy=GenerationType.AUTO)

    private int id;

    private Stringuname;

    public int getId() {

       returnid;

    }

    public void setId(int id) {

       this.id = id;

    }

    public String getUname() {

       returnuname;

    }

    public void setUname(String uname) {

       this.uname = uname;

    }

}

package com.sxt.dao;

 

import org.springframework.orm.hibernate3.HibernateTemplate;

 

import com.sxt.po.User;

 

public class UserDao {

         private HibernateTemplate hibernateTemplate;

        

         public void add(User u){

                   System.out.println("UserDao.add()");

                   hibernateTemplate.save(u);

         }

 

         public HibernateTemplate getHibernateTemplate() {

                   return hibernateTemplate;

         }

 

         public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {

                   this.hibernateTemplate = hibernateTemplate;

         }

        

}

package com.sxt.service;

 

import com.sxt.dao.UserDao;

import com.sxt.po.User;

 

public class UserService {

        

         private UserDao userDao;

        

         public void add(String uname){

                   System.out.println("UserService.add()");

                   User u = new User();

                   u.setUname(uname);

                   userDao.add(u);

         }

 

         public UserDao getUserDao() {

                   return userDao;

         }

 

         public void setUserDao(UserDao userDao) {

                   this.userDao = userDao;

         }

        

}

package com.sxt.action;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

 

import com.sxt.service.UserService;

 

public class UserController implements Controller {

 

         private UserService userService;

        

         @Override

         public ModelAndView handleRequest(HttpServletRequest req,

                            HttpServletResponse resp) throws Exception {

                   System.out.println("HelloController.handleRequest()");

                   req.setAttribute("a", "aaaa");

                   userService.add(req.getParameter("uname"));

                   return new ModelAndView("index");

         }

 

         public UserService getUserService() {

                   return userService;

         }

 

         public void setUserService(UserService userService) {

                   this.userService = userService;

         }

 

        

}


index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  
  <body>
    This is my JSP page. <br>
  </body>
</html>


测试  

http://localhost:9000/springmvc01/user.do?uname=zhangsan

发现数据库中没有插入这条记录



在代码中 一直寻找 实体类 和 数据库表的关系, 一直没找到,

后来在在hib-config.xml中发现这行代码:  <prop key="hibernate.hbm2ddl.auto">update</prop> 然后在百度上 搜索这行代码,

其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none"。
create:
每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop :
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:
最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
validate :
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

再说点“废话”:
当我们把hibernate.hbm2ddl.auto=create时hibernate先用hbm2ddl来生成数据库schema。
当我们把hibernate.cfg.xml文件中hbm2ddl属性注释掉,这样我们就取消了在启动时用hbm2ddl来生成数据库schema。通常 只有在不断重复进行单元测试的时候才需要打开它,但再次运行hbm2ddl会把你保存的一切都删除掉(drop)---- create配置的含义是:“在创建SessionFactory的时候,从scema中drop掉所以的表,再重新创建它们”。
注意,很多Hibernate新手在这一步会失败,我们不时看到关于Table not found错误信息的提问。但是,只要你根据上面描述的步骤来执行,就不会有这个问题,因为hbm2ddl会在第一次运行的时候创建数据库schema, 后续的应用程序重启后还能继续使用这个schema。假若你修改了映射,或者修改了数据库schema,你必须把hbm2ddl重新打开一次。


然后 尝试将将user实体类 改成 userinfo, 成功插入

原来是实体类user, 在oracle中无法 创建user这个用户,

oacle中自动创建表 userinfo, 插入一条记录 userinfo


明天下班有空看看springmvc框架的具体跳转方式 原理

0 0
原创粉丝点击