[JAVA] Spring Awakening Strategy Spring MVC Teil 1

Spiel mit Spring MVC (5)

Ich kann nicht für immer ein Struts1-System sein: heat_smile:

Willst du zuerst etwas machen?

Ich habe eine transzendental einfache Todo-App erstellt: Freude:

  1. Startbildschirm 初期画面.png
  2. Vor der Registrierung 登録前.png
  3. Nach der Registrierung 登録後.png
  4. Nach Abschluss 完了.png
  5. Vor der Suche 検索前.png
  6. Nach der Suche 検索後.png
  7. Szenerie auflisten 全景.png

Wenn Sie auf die Schaltfläche "Fertig stellen" klicken, wird eine Stornierungszeile angezeigt. Wenn Sie auf die Schaltfläche "Auferstehung" klicken, wird das Stornierungsziel ausgeblendet.

Der Controller sieht natürlich so aus. "Registrierung", "Suche", "Fertig" und "Auferstehung" werden alle umgeleitet. Und jedes Mal werden alle Daten aus der Tabelle entfernt, in eine Liste aufgenommen und an den Bildschirm übergeben.

   @RequestMapping(value = "/newItem", params="newItem",method = RequestMethod.POST)
    @Transactional("transactionManagerName")
    public String newItem(@Validated TodoForm form, BindingResult result, Model model)
    {
    	DefaultTransactionDefinition dtDef = new DefaultTransactionDefinition();
    	TransactionStatus tSts = txMgr.getTransaction(dtDef);

		try
		{
			 jdbcTemplate.update("INSERT INTO todo (content,done) VALUES (?, ?)", form.getContent(),false);
			 txMgr.commit(tSts);
		}
		catch(Exception ex)
		{
			txMgr.rollback(tSts);
			logger.debug("Update fehlgeschlagen",ex.toString());
		}

        return "redirect:/";
    }

    @RequestMapping(value = "/newItem", params="searchItem",method = RequestMethod.POST)
    @Transactional("transactionManagerName")
    public String searchItem(@Validated TodoForm form, BindingResult result, Model model)
    {
    	String likeSQL = "select * from todo where content like '%" + form.getContent() + "%'";

		//Holen Sie sich alle Daten aus der Tabelle todo
		List<Map<String, Object>> ret = jdbcTemplate.queryForList(likeSQL);
		//Generieren Sie eine Liste mit Daten, die an den Bildschirm übergeben werden sollen
		List<TodoItem> mList = new ArrayList<TodoItem>();
		for(int i=0;i<ret.size();i++)
		{
			TodoItem tmp = new TodoItem();
			tmp.setId(ret.get(i).get("id").toString());
			tmp.setContent(ret.get(i).get("content").toString());
			if(ret.get(i).get("done").toString().equals("false"))
			{
				tmp.setDone(false);
			}
			else
			{
				tmp.setDone(true);
			}
			mList.add(tmp);
		}
		//Stellen Sie die Liste, die an den Bildschirm übergeben werden soll, auf Modell ein
		model.addAttribute("mList", mList );

		return "todo/todo";
    }

	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String index(Locale locale, Model model)
	{
		//Holen Sie sich alle Daten aus der Tabelle todo
		List<Map<String, Object>> ret = jdbcTemplate.queryForList("select * from todo");
		//Generieren Sie eine Liste mit Daten, die an den Bildschirm übergeben werden sollen
		List<TodoItem> mList = new ArrayList<TodoItem>();
		for(int i=0;i<ret.size();i++)
		{
			TodoItem tmp = new TodoItem();
			tmp.setId(ret.get(i).get("id").toString());
			tmp.setContent(ret.get(i).get("content").toString());
			if(ret.get(i).get("done").toString().equals("false"))
			{
				tmp.setDone(false);
			}
			else
			{
				tmp.setDone(true);
			}
			mList.add(tmp);
		}
		//Stellen Sie die Liste, die an den Bildschirm übergeben werden soll, auf Modell ein
		model.addAttribute("mList", mList );

		return "todo/todo";
	}

    @RequestMapping(value = "/restore", method = RequestMethod.POST)
    @Transactional("transactionManagerName")
    public String restore(@Validated TodoForm form, BindingResult result, Model model)
    {
    	DefaultTransactionDefinition dtDef = new DefaultTransactionDefinition();
    	TransactionStatus tSts = txMgr.getTransaction(dtDef);

    	List<Map<String, Object>> ret = jdbcTemplate.queryForList("select * from todo WHERE id=?",new Object[]{form.getId()});
    	if(ret.size()>0)
    	{
    		TodoItem upItem = new TodoItem();
    		upItem.setId(form.getId());
    		upItem.setContent(form.getContent());
    		upItem.setDone(form.getDone());

    		SqlParameterSource param = new BeanPropertySqlParameterSource(upItem);

    		try
    		{
    			 jdbcTemplate.update("UPDATE todo SET done = ? WHERE id = ?",false,form.getId());
    			 txMgr.commit(tSts);
    		}
    		catch(Exception ex)
    		{
    			txMgr.rollback(tSts);
    			logger.debug("Update fehlgeschlagen",ex.toString());
    		}
    	}
    	else
    	{
    		logger.debug("Nicht aktualisierbar");
    	}

        return "redirect:/";
    }

    @RequestMapping(value = "/done", method = RequestMethod.POST)
    @Transactional("transactionManagerName")
    public String done(@Validated TodoForm form, BindingResult result, Model model)
    {

    	DefaultTransactionDefinition dtDef = new DefaultTransactionDefinition();
    	TransactionStatus tSts = txMgr.getTransaction(dtDef);

    	List<Map<String, Object>> ret = jdbcTemplate.queryForList("select * from todo WHERE id=?",new Object[]{form.getId()});
    	if(ret.size()>0)
    	{
    		TodoItem upItem = new TodoItem();
    		upItem.setId(form.getId());
    		upItem.setContent(form.getContent());
    		upItem.setDone(form.getDone());

    		SqlParameterSource param = new BeanPropertySqlParameterSource(upItem);

    		try
    		{
    			 jdbcTemplate.update("UPDATE todo SET done = ? WHERE id = ?",true,form.getId());
    			 txMgr.commit(tSts);
    		}
    		catch(Exception ex)
    		{
    			txMgr.rollback(tSts);
    			logger.debug("Update fehlgeschlagen",ex.toString());
    		}
    	}
    	else
    	{
    		logger.debug("Nicht aktualisierbar");
    	}

        return "redirect:/";
    }

Ich benutze MySQL. Der Tisch sieht so aus.

CREATE TABLE `todo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(50) DEFAULT NULL,
  `done` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8

Klicken Sie hier für eine dünne Quelle: umarmen: https://github.com/pugachev/todomvc.git

Das Wetter war diesen Samstag und Sonntag schlecht: Regenschirm2: Es war kalt: Schneeflocke: Also habe ich es von Hand gemacht. Ich habe mich auch auf andere Leute bezogen. Vielen Dank.

Recommended Posts

Spring Awakening Strategy Spring MVC Teil 1
Spring Awakening Strategy Spring MVC Teil 4
Spring Awakening Strategy Spring MVC Teil 3
Spring Awakening Strategy Spring MVC Teil 2
Einführung in Spring Boot Teil 1
Implementieren Sie den Dateidownload mit Spring MVC
Spring Boot ab Null Teil 2
Spring Boot ab Null Teil 1