第一有一个web.xml文件,最美不过心动

1.开立一个动态的web工程

一仍其旧记得某些高级中学的早晨,拿着某篇连载在读,遗憾的结果让自家记住了作者姚非拉。

By Gabriel Santiago

2.导入springMvc所急需的jar包(这里能够去英特网找,财富有过多)

故事中的女子问孩他爸“你说我们最后会成婚么?”男子说“不掌握。”传说最终女孩离开了,男孩贯着东风穿梭在人群里。

最美但是心动

前两部就不详细描述了,前面才是体面代码~

自身当即带着冰冷痛心可惜那不及人意的后果。几年后,作者买下了姚非拉小说《80℃》单行本,花了一天时间看完,突然想起“100℃太沸,50℃太凉,80℃的痴情刚刚好。”即便不想确认,但毋庸置疑是个所以然。

英文里有个词,叫 crush。
查字典,你会意识,那是“压碎、碾碎、打散”的意思。
只是当名词使用时,正是“短暂的、热烈的但又是娇羞的恋爱”比方,“I had a
crush on him ”。便是 “ 小编早就短暂地、热烈地、但又害羞地喜爱过Ta ” 。
有人译作“心动”,不过“心动”在心绪烈度上更微弱、在时光上越来越长久,而有一点朝恋爱、婚姻这多少个地点够的志向。
Crush则不一样,它稍纵即逝,不过令你心不在焉。
——《Crush》刘瑜,《送您一颗子弹》

short-lived and unrequited love or infatuation
——Wiki

首先有二个web.xml文件,那几个属于大布局文件,由于只要写login,里面大致布置一下核心条件就足以

青春年华时总说高校恋爱青涩无知男女双方不懂爱情,近期才察觉学校内的相恋才真正纯真。朵朵是个天真可爱的学士,与男朋友恋爱里遭到情敌挑衅与男友的不关切,面对心爱的男友,自卑又可爱的朵朵终于跨着泥泞和男友和好如初。

Crush是短暂、猛烈、未有意向的欢欣和痴迷,就如偶遇时的脸红、心跳;而“心动”时间长些、激情浅一点。

 

常青时不懂爱的繁荣昌盛为啥结局总是落下遗憾。佳佳扔下了志恒又失踪了,而志恒完成了明星梦也交到了女对象。幸福的他们在之后会带着哪些的心思纪念这段爱情。

独坐在座位上心动的人儿,忽然有了感到没来得及行动就早就一去不归。只怕是因为几分羞涩,不佳意思揭穿,然后就这么失去那位王子/公主;大概是忧郁难以“发展”,因为日子和空间的距离不能够时时相会、打开一段浪漫好玩的事;或然忙着作业、考试、一路迈入奔跑无暇于此。

<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
     <servlet-name>springmvc</servlet-name>
     <url-pattern>/</url-pattern>
  </servlet-mapping>

老实的孙甜甜遇上了“什么都不绝对”的江海洋,这几个酷暑,敢爱敢恨的孙小甜走进了拥挤剧组,认知了江海洋,但是延续串的事故发生,当优质爱情遭碰着现实,敢爱敢恨的孙甜甜只好在遗憾里成长。

Crush如火柴焰火:划开时迸出深刻的火光,火及木柄后飞速就点火殆尽。
当把Crush形成叁个种子,让它生根发芽烦恼相伴而来:怎么去接触Ta、怎么着去认知Ta……

加盟的这么些叫Dispatcher
Servlet,能够依附servlet-name找到呼应的小安顿文件,也正是安排spring
MVC的公文

《80℃》是讲诉爱情故事的合集,每个单行本都以一个独立传说,从青春到老年,不一样年龄段对爱情的掌握和阅历让读者找到当时自身的背影,或感叹或哀愁或悲悯。都说爱情是徘徊花,充满芬芳却枝节满是刺,从它抽芽都是忍着荆棘成长开花。

像得了一场咳嗽,八天、三个礼拜以至二个月的年月幻想。希望观望Ta
,在马路上、在书店、在想到的其它只怕的地点。

在web.xml文件同级目录下新建springmvc-servlet.xml文件,上面是springmvc-servlet.xml文件中的内容

好的旧事不用投机取巧的,它的细枝末节会引领你会心传说自个儿。小编作画时把各地点技艺都分配平衡,拒绝了汪洋的秉性色彩摄入,一言一动不过只是想找到能读懂传说的人而已。


 

姚非拉的传说是带着情绪的,你看她的每一格分镜每一句语言都浸润着心情,不用小编亲身交代独白,对话也是轻描淡写,你有相当大可能率就在某一转眼就心领神会了心思温度。

正如一首歌里唱到的那样:

When I feel blue in the night /当夜里觉获得忧桑
And I need you to hold me tight /每当想抱着你
Whenever I want you all I have to do Is dream /笔者所能做的唯有去想象

I can make you mine taste your lips of wine /亲吻妳那醉人的双唇。
Any time night or day /无论白天要么黑夜
Only trouble is Gee is /笔者的老天
I’m dreaming my life away /小编的生存都在幻想中流失了

I need you so that I could die /没了你本人要死去
I love you so and that is why /因为那么中意你
Whenever I want you all I have to do /每趟想起你
Is dream dream dream dream Dream / 笔者不得不一向的美好的梦

——《All I Have To Do Is Dream》The Everly Brothers

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    <!--默认的注解映射的支持 -->
    <mvc:annotation-driven/>
    <!--启用自动扫描 -->
    <context:component-scan base-package="controller"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

在姚非拉笔下,立场感也很弱,对错是非从不会油可是生在姚非拉的文章里,也不偏袒剧中人物,他只是做个讲典故的人,逸事讲完就甘休了,喜怒哀乐全凭读者意会。

专注表明的是,运行自动扫描,spring会在钦命的包下(举例作者那边是controller包),自动扫描标记@Controller的类

 忽然想经历一场80℃的柔情,如热水同样,陪伴于细水命宫。

prefix指的是回到的值给机关加贰个前缀,同理suffix指的就是后缀


图片 1

《80℃》

 

志恒和佳佳

 图片 2

观望这里也是够勤奋了,上面是交由的一体化目录,下边初阶写逻辑代码,先从loginController初阶

@Controller
public class LoginController {
    @RequestMapping(value="/",method=RequestMethod.GET)
    public String sayHello(){
        //model.addAttribute("msg", "Hello,World!");
        return "login";
    }

演说上边代码,@Controller,标明那么些类是Controller类,spring会自动实行扫描,@Request
Mapping中的value指的是url中的地址后缀,设置成/的指标自然是为着便利啊,

例如运转工程时,url只需求输入什么localhost:8080/项目名,它就能活动跳转到login页面;method指的是来的url是post诉求照旧get央求

return的是login字符串,我们还记得上边说的prefix了吗,它就能够把你的url自动拼接上,完整路径正是底下这一个

/WEB-INF/jsp/login.jsp

 接下来看login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>login</title>
</head>
<body>
    <form action="login" method="post">
        用户名:<input type="text" name="username"/><br/>
        密&nbsp;&nbsp;码:<input type="password" name="password"/>
        <input type="submit" value="登陆"/>
        <a href="regist">注册</a>
    </form>
</body>
</html>

此处的action再次回到的是login,Controller会自动捕获到这些乞求,于是在login
Controller中要有二个方法来捕获那个伏乞

@RequestMapping(value="login",method=RequestMethod.POST)
    public String login(Model model, // 向前台页面传的值放入model中
            HttpServletRequest request){ // 从前台页面取得的值
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String user_name = LoginCheck.check(username, password);
        if(user_name != null && user_name != ""){
            model.addAttribute("msg", user_name);
            return "success";
        }else{
            return "login2";
        }
    }

登录嘛,当然要有表达,于是就有了LoginCheck,非常的少说,上代码

package logic;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import dao.Dao;

public class LoginCheck {

    public static String check(String username,String password){
        try {
            Connection conn = Dao.getConnection();
            PreparedStatement p = conn.prepareStatement("select * from user_t where user_name=? and password=?");
            p.setString(1, username);
            p.setString(2, password);
            ResultSet rs = p.executeQuery();
            if(rs.next()){
                String user_name = rs.getString("user_name");
                Dao.close(rs, p, conn);
                return user_name;
            }
            Dao.close(rs, p, conn);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
}

向数据库查询将要有DAO啦,Dao英特网都有,作者的便是在网络随意找三个改变就用了~

package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Dao {
    // 获取数据库连接
    public static Connection getConnection(){

        Connection conn = null;
        String url = "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=Hongkong";
        try
        {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection(url,"root","数据库密码");//大家分享代码的时候也不要暴露自己的数据库密码,这样是非常不安全的
        }
        catch(ClassNotFoundException e)
        {
            e.printStackTrace();
            System.out.println("数据库驱动加载出错");
        }
        catch(SQLException e)
        {
            e.printStackTrace();
            System.out.println("数据库出错");
        }
        return conn;
    }
     //关闭相关通道
    public static void close(ResultSet rs,PreparedStatement p,Connection conn)
    {
        try
        {
            if(!rs.isClosed()){
                rs.close();
            }
            if(!p.isClosed()){
                p.close();
            }
            if(!conn.isClosed()){
                conn.close();
            }
        }
        catch(SQLException e)
        {
            e.printStackTrace();
            System.out.println("数据关闭出错");
        }
    }
    //关闭相关通道
    public static void close(PreparedStatement p,Connection conn)
    {
        try
        {
            if(!p.isClosed()){
                p.close();
            }
            if(!conn.isClosed()){
                conn.close();
            }
        }
        catch(SQLException e)
        {
            e.printStackTrace();
            System.out.println("数据关闭出错");
        }
    }
}

好了,就算查询的结果异常上数据库中询问到的值了,那么就能够跳转到success页面了,success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆成功</title>
</head>
<body>
    登陆成功!
    欢迎~${msg};
</body>
</html>

login马到功成,接下去的挂号页面和这么些道理相似,小编十分的少废话了,把代码附上供大家仿效

首先是regist.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
</head>
<body>
    <form action="registSuccess" method="Post">
        用户名:<input type="text" name="username"/>
        密&nbsp;&nbsp;码<input type="text" name="password"/>
        年&nbsp;&nbsp;龄<input type="number" name="age"/>
        <input type="submit" value="提交"/>
    </form>
</body>
</html>

接下去是RegistController

package controller;

import javax.servlet.http.HttpServletRequest;

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 logic.RegistCheck;

@Controller
public class RegistController {
    @RequestMapping(value="regist",method=RequestMethod.GET)
    public String regist(){
        return "regist";
    }

    @RequestMapping(value="registSuccess",method=RequestMethod.POST)
    public String registSuccess(HttpServletRequest request,Model model){
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String age = request.getParameter("age");

        if(RegistCheck.registCheck(username, password,age)){
            model.addAttribute("username", username);
            return "login";
        }else{
            return "regist2";
        }
    }
}

接下去是RegistCheck

 

package logic;

import java.sql.Connection;
import java.sql.PreparedStatement;

import dao.Dao;

public class RegistCheck {

    public static boolean registCheck(String username,String password,String age){
        String user_name = LoginCheck.check(username, password);
        if(user_name == null || user_name == ""){
            try {
                Connection conn = Dao.getConnection();
                PreparedStatement p = conn.prepareStatement("insert user_t(user_name,password,age) VALUES (?,?,?);");
                p.setString(1, username);
                p.setString(2, password);
                p.setString(3, age);
                p.executeUpdate();
                System.out.println("注册成功");
                Dao.close(p, conn);
                return true;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return false;
    }
}

再有多个registSuccess.jsp,成功再次回到的页面,小编只是放了个空页面,没内容

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册成功</title>
</head>
<body>
    注册成功!
</body>
</html>

好了,今后截止login和登记页面都写好了,新人刚到公司的时候特别轻易遭逢那样的小演练,哈哈哈说多了,喜欢就点赞哈

接待转发,转发请注解出处~

Java从上学到抛弃,MySQL从删库到跑路,哈哈哈

 

相关文章