Added Complete Source Code for VRaptor BAEL-1214 (#3237)
* added updated example codes * updated example code StringToCharStream * deleted StringToCharStream.java locally * removed redundant file * added code for apache commons collection SetUtils * refactored example code * added example code for bytebuddy * added example code for PCollections * update pom * refactored tests for PCollections * spring security xml config * spring security xml config * remove redundant comment * example code for apache-shiro * updated example code for Vavr Collections * updated Vavr's Collection example * updated Vavr Collection file * updated example code for Apache Shiro * updated Vavr Collections example * added example code for N1QL * update example code for N1QL * added integration test for N1QL * update N1QL Example code * update the N1QL example Code * rename module to couchbase * rename module to couchbase * change module name in parent module and pom * added cas-server module * added cas secured app for Spring SSO with CAS * refactor cas modules into cas folder * updated files * removed redundant files * refactor the config for cas-server * added sql file to generate tables and database * added source code for VRaptor * update source code for VRaptor article * update pom and reformat code
This commit is contained in:
committed by
Grzegorz Piwowarek
parent
3bcff4672e
commit
87e7b66300
@@ -264,6 +264,7 @@
|
||||
<module>deeplearning4j</module>
|
||||
<module>spring-boot-admin</module>
|
||||
<module>lucene</module>
|
||||
<module>vraptor</module>
|
||||
</modules>
|
||||
|
||||
<dependencies>
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
/target/
|
||||
/.idea/
|
||||
/src/main/webapp/WEB-INF/classes/
|
||||
@@ -0,0 +1,13 @@
|
||||
# VRaptor blank project
|
||||
|
||||
This is a blank project to help you to use VRaptor. You can easily import in you IDE as Maven project.
|
||||
|
||||
Este é um projeto em branco para ajudar você a usar o VRaptor. Você pode facilmente importá-lo na sua IDE favorita como um projeto Maven.
|
||||
|
||||
Após criar seu projeto você pode rodá-lo com um tomcat7 ou +:
|
||||
|
||||
```
|
||||
mvn tomcat7:run
|
||||
```
|
||||
|
||||
Cuidado para *jamais* executar `mvn tomcat:run` pois ele usará um tomcat6 (incompatível).
|
||||
+134
@@ -0,0 +1,134 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>com.baeldung</groupId>
|
||||
<artifactId>vraptor</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<packaging>war</packaging>
|
||||
|
||||
<description>A demo project to start using VRaptor 4</description>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<weld.version>2.1.2.Final</weld.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>br.com.caelum</groupId>
|
||||
<artifactId>vraptor</artifactId>
|
||||
<version>4.2.0.Final</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.jboss.weld.servlet</groupId>
|
||||
<artifactId>weld-servlet-core</artifactId>
|
||||
<version>2.1.2.Final</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.jboss.spec.javax.el</groupId>
|
||||
<artifactId>jboss-el-api_3.0_spec</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.jboss.weld</groupId>
|
||||
<artifactId>weld-core-impl</artifactId>
|
||||
<version>2.1.2.Final</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.jboss.spec.javax.el</groupId>
|
||||
<artifactId>jboss-el-api_3.0_spec</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.el</groupId>
|
||||
<artifactId>el-api</artifactId>
|
||||
<version>2.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.hibernate</groupId>
|
||||
<artifactId>hibernate-validator-cdi</artifactId>
|
||||
<version>5.1.1.Final</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>jstl</artifactId>
|
||||
<version>1.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-log4j12</artifactId>
|
||||
<version>1.7.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>br.com.caelum.vraptor</groupId>
|
||||
<artifactId>vraptor-freemarker</artifactId>
|
||||
<version>4.1.0-RC3</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>br.com.caelum.vraptor</groupId>
|
||||
<artifactId>vraptor-hibernate</artifactId>
|
||||
<version>4.0.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>8.0.8-dmr</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.mindrot</groupId>
|
||||
<artifactId>jbcrypt</artifactId>
|
||||
<version>0.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.freemarker</groupId>
|
||||
<artifactId>freemarker</artifactId>
|
||||
<version>2.3.27-incubating</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>vraptor</finalName>
|
||||
<outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.1</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.tomcat.maven</groupId>
|
||||
<artifactId>tomcat7-maven-plugin</artifactId>
|
||||
<version>2.1</version>
|
||||
<configuration>
|
||||
<path>/</path>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.baeldung.config;
|
||||
|
||||
import com.baeldung.models.User;
|
||||
|
||||
import javax.enterprise.context.SessionScoped;
|
||||
import java.io.Serializable;
|
||||
|
||||
@SessionScoped
|
||||
public class UserInfo implements Serializable {
|
||||
|
||||
private User user;
|
||||
|
||||
|
||||
public UserInfo() {}
|
||||
|
||||
public User getUser() {
|
||||
return user;
|
||||
}
|
||||
|
||||
public void setUser(User user) {
|
||||
this.user = user;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
package com.baeldung.controllers;
|
||||
|
||||
import br.com.caelum.vraptor.*;
|
||||
import br.com.caelum.vraptor.freemarker.FreemarkerView;
|
||||
import br.com.caelum.vraptor.validator.Validator;
|
||||
import com.baeldung.config.UserInfo;
|
||||
import com.baeldung.daos.UserDao;
|
||||
import com.baeldung.models.User;
|
||||
import org.mindrot.jbcrypt.BCrypt;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Objects;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@Controller
|
||||
public class AuthController {
|
||||
|
||||
private Validator validator;
|
||||
private UserDao userDao;
|
||||
private Result result;
|
||||
private UserInfo userInfo;
|
||||
private Logger logger = Logger.getLogger(getClass().getName());
|
||||
|
||||
public AuthController() {
|
||||
this(null, null, null, null);
|
||||
}
|
||||
|
||||
@Inject
|
||||
public AuthController(Validator validator, UserDao userDao, Result result, UserInfo userInfo) {
|
||||
this.validator = validator;
|
||||
this.userDao = userDao;
|
||||
this.result = result;
|
||||
this.userInfo = userInfo;
|
||||
}
|
||||
|
||||
@Get("/register")
|
||||
public void registrationForm() {
|
||||
result.use(FreemarkerView.class).withTemplate("auth/register");
|
||||
}
|
||||
|
||||
@Post("/register")
|
||||
public void register(User user, HttpServletRequest request) {
|
||||
|
||||
validator.validate(user);
|
||||
|
||||
if(validator.hasErrors()) {
|
||||
result.include("errors", validator.getErrors());
|
||||
}
|
||||
|
||||
validator.onErrorRedirectTo(this).registrationForm();
|
||||
|
||||
if(!user.getPassword()
|
||||
.equals(request.getParameter("password_confirmation"))) {
|
||||
result.include("error", "Passwords Do Not Match");
|
||||
result.redirectTo(this).registrationForm();
|
||||
}
|
||||
|
||||
user.setPassword(
|
||||
BCrypt.hashpw(user.getPassword(), BCrypt.gensalt()));
|
||||
|
||||
Object resp = userDao.add(user);
|
||||
|
||||
if(resp != null) {
|
||||
result.include("status", "Registration Successful! Now Login");
|
||||
result.redirectTo(this).loginForm();
|
||||
} else {
|
||||
result.include("error", "There was an error during registration");
|
||||
result.redirectTo(this).registrationForm();
|
||||
}
|
||||
}
|
||||
|
||||
@Get("/login")
|
||||
public void loginForm() {
|
||||
result.use(FreemarkerView.class).withTemplate("auth/login");
|
||||
}
|
||||
|
||||
@Post("/login")
|
||||
public void login(HttpServletRequest request) {
|
||||
|
||||
String password = request.getParameter("user.password");
|
||||
String email = request.getParameter("user.email");
|
||||
|
||||
if(email.isEmpty() || password.isEmpty()) {
|
||||
result.include("error", "Email/Password is Required!");
|
||||
result.redirectTo(AuthController.class).loginForm();
|
||||
}
|
||||
|
||||
User user = userDao.findByEmail(email);
|
||||
if(user != null && BCrypt.checkpw(password, user.getPassword())) {
|
||||
userInfo.setUser(user);
|
||||
result.include("status", "Login Successful!");
|
||||
result.redirectTo(IndexController.class).index();
|
||||
} else {
|
||||
result.include("error", "Email/Password Does Not Match!");
|
||||
result.redirectTo(AuthController.class).loginForm();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.baeldung.controllers;
|
||||
|
||||
import br.com.caelum.vraptor.Controller;
|
||||
import br.com.caelum.vraptor.Path;
|
||||
import br.com.caelum.vraptor.Result;
|
||||
import br.com.caelum.vraptor.freemarker.FreemarkerView;
|
||||
import com.baeldung.daos.PostDao;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@Controller
|
||||
public class IndexController {
|
||||
|
||||
private PostDao postDao;
|
||||
private final Result result;
|
||||
private static final Logger logger = LoggerFactory.getLogger(IndexController.class);
|
||||
|
||||
public IndexController() {
|
||||
this(null, null);
|
||||
}
|
||||
|
||||
@Inject
|
||||
public IndexController(Result result, PostDao postDao) {
|
||||
this.result = result;
|
||||
this.postDao = postDao;
|
||||
}
|
||||
|
||||
@Path("/")
|
||||
public void index() {
|
||||
result.include("posts", postDao.all());
|
||||
result.use(FreemarkerView.class).withTemplate("index");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
package com.baeldung.controllers;
|
||||
|
||||
import br.com.caelum.vraptor.Controller;
|
||||
import br.com.caelum.vraptor.Get;
|
||||
import br.com.caelum.vraptor.Path;
|
||||
import br.com.caelum.vraptor.Result;
|
||||
import br.com.caelum.vraptor.freemarker.FreemarkerView;
|
||||
import br.com.caelum.vraptor.validator.Validator;
|
||||
import com.baeldung.config.UserInfo;
|
||||
import com.baeldung.daos.PostDao;
|
||||
import com.baeldung.models.Post;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Objects;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@Controller
|
||||
public class PostController {
|
||||
|
||||
private Result result;
|
||||
private Logger logger = Logger.getLogger(PostController.class.getName());
|
||||
private PostDao postDao;
|
||||
private UserInfo userInfo;
|
||||
private Validator validator;
|
||||
|
||||
public PostController() {}
|
||||
|
||||
@Inject
|
||||
public PostController(Result result, PostDao postDao, UserInfo userInfo, Validator validator) {
|
||||
this.result = result;
|
||||
this.postDao = postDao;
|
||||
this.userInfo = userInfo;
|
||||
this.validator = validator;
|
||||
}
|
||||
|
||||
@Get("/post/add")
|
||||
public void addForm() {
|
||||
|
||||
if(Objects.isNull(userInfo.getUser())) {
|
||||
result.include("error", "Please Login to Proceed");
|
||||
result.redirectTo(AuthController.class).loginForm();
|
||||
return;
|
||||
}
|
||||
|
||||
result.use(FreemarkerView.class).withTemplate("posts/add");
|
||||
}
|
||||
|
||||
@br.com.caelum.vraptor.Post("/post/add")
|
||||
public void add(Post post) {
|
||||
post.setAuthor(userInfo.getUser());
|
||||
validator.validate(post);
|
||||
if(validator.hasErrors())
|
||||
result.include("errors", validator.getErrors());
|
||||
validator.onErrorRedirectTo(this).addForm();
|
||||
|
||||
Object id = postDao.add(post);
|
||||
|
||||
if(Objects.nonNull(id)) {
|
||||
result.include("status", "Post Added Successfully");
|
||||
result.redirectTo(IndexController.class).index();
|
||||
} else {
|
||||
result.include(
|
||||
"error", "There was an error creating the post. Try Again");
|
||||
result.redirectTo(this).addForm();
|
||||
}
|
||||
}
|
||||
|
||||
@Get("/posts/{id}")
|
||||
public void view(int id) {
|
||||
result.include("post", postDao.findById(id));
|
||||
result.use(FreemarkerView.class).withTemplate("view");
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.baeldung.daos;
|
||||
|
||||
import com.baeldung.controllers.PostController;
|
||||
import com.baeldung.models.Post;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.SessionFactory;
|
||||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@RequestScoped
|
||||
public class PostDao {
|
||||
|
||||
private Logger logger = Logger.getLogger(PostController.class.getName());
|
||||
private SessionFactory sessionFactory;
|
||||
|
||||
public PostDao() {}
|
||||
|
||||
@Inject
|
||||
public PostDao(SessionFactory sessionFactory) {
|
||||
this.sessionFactory = sessionFactory;
|
||||
}
|
||||
|
||||
public Object add(Post post) {
|
||||
Session session = sessionFactory.openSession();
|
||||
session.beginTransaction();
|
||||
Object id = session.save(post);
|
||||
session.getTransaction().commit();
|
||||
session.close();
|
||||
return id;
|
||||
}
|
||||
|
||||
public Post findById(int id) {
|
||||
Session session = sessionFactory.openSession();
|
||||
session.beginTransaction();
|
||||
Post post = (Post) session.get(Post.class, id);
|
||||
session.getTransaction().commit();
|
||||
session.close();
|
||||
return post;
|
||||
}
|
||||
|
||||
|
||||
public List<Post> all() {
|
||||
Session session = sessionFactory.openSession();
|
||||
session.beginTransaction();
|
||||
List<Post> posts = (List<Post>) session.createQuery("FROM Post p").list();
|
||||
session.getTransaction().commit();
|
||||
session.close();
|
||||
return posts;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.baeldung.daos;
|
||||
|
||||
import com.baeldung.models.User;
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.Session;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.criterion.Criterion;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.omg.PortableInterceptor.LOCATION_FORWARD;
|
||||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Inject;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@RequestScoped
|
||||
public class UserDao {
|
||||
|
||||
SessionFactory sessionFactory;
|
||||
|
||||
public UserDao() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
@Inject
|
||||
public UserDao(SessionFactory sessionFactory) {
|
||||
this.sessionFactory = sessionFactory;
|
||||
}
|
||||
|
||||
|
||||
public Object add(User user) {
|
||||
Session session = sessionFactory.openSession();
|
||||
session.beginTransaction();
|
||||
Object Id = session.save(user);
|
||||
session.getTransaction().commit();
|
||||
return Id;
|
||||
}
|
||||
|
||||
public User findByEmail(String email) {
|
||||
Session session = sessionFactory.openSession();
|
||||
session.beginTransaction();
|
||||
Criteria criteria = session.createCriteria(User.class);
|
||||
criteria.add(Restrictions.eq("email", email));
|
||||
criteria.setMaxResults(1);
|
||||
User u = (User) criteria.uniqueResult();
|
||||
session.getTransaction().commit();
|
||||
session.close();
|
||||
return u;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package com.baeldung.models;
|
||||
|
||||
|
||||
import javax.persistence.*;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@Entity
|
||||
@Table(name = "posts")
|
||||
public class Post {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private int id;
|
||||
|
||||
@NotNull @Size(min = 10)
|
||||
@Column(columnDefinition = "longtext")
|
||||
private String post;
|
||||
|
||||
@NotNull @Size(min = 5, max = 100)
|
||||
@Column(unique = true)
|
||||
private String title;
|
||||
|
||||
@NotNull
|
||||
@ManyToOne(targetEntity = User.class, optional = false)
|
||||
private User author;
|
||||
|
||||
@Column(name = "created_at")
|
||||
private Date createdAt;
|
||||
|
||||
@Column(name = "updated_at")
|
||||
private Date updatedAt;
|
||||
|
||||
@Transient
|
||||
private Logger logger = Logger.getLogger(getClass().getName());
|
||||
|
||||
public Post() {
|
||||
createdAt = new Date();
|
||||
updatedAt = new Date();
|
||||
}
|
||||
|
||||
public Post(String title, String post, User author) {
|
||||
this.title = title;
|
||||
this.post = post;
|
||||
this.author = author;
|
||||
createdAt = new Date();
|
||||
updatedAt = new Date();
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getPost() {
|
||||
return post;
|
||||
}
|
||||
|
||||
public void setPost(String post) {
|
||||
this.post = post;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public User getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public void setAuthor(User author) {
|
||||
this.author = author;
|
||||
}
|
||||
|
||||
public Date getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(Date createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public Date getUpdatedAt() {
|
||||
return updatedAt;
|
||||
}
|
||||
|
||||
public void setUpdatedAt(Date updatedAt) {
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "title: " + this.title
|
||||
+ "\npost: " + this.post
|
||||
+ "\nauthor: " + this.author
|
||||
+"\ncreatetdAt: " + this.createdAt
|
||||
+ "\nupdatedAt: " + this.updatedAt;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
package com.baeldung.models;
|
||||
|
||||
import org.hibernate.validator.constraints.Email;
|
||||
|
||||
import javax.persistence.*;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Pattern;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
|
||||
@Entity
|
||||
@Table(name = "users")
|
||||
public class User {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private int id;
|
||||
|
||||
@NotNull
|
||||
@Size(min=3, max=255)
|
||||
private String name;
|
||||
|
||||
@Column(unique = true)
|
||||
@NotNull @Email
|
||||
private String email;
|
||||
|
||||
@NotNull
|
||||
@Size(min=6, max=255)
|
||||
private String password;
|
||||
|
||||
@Column(name = "created_at")
|
||||
private Date createdAt;
|
||||
|
||||
@Column(name = "updated_at")
|
||||
private Date updatedAt;
|
||||
|
||||
public User() {
|
||||
updatedAt = new Date();
|
||||
createdAt = new Date();
|
||||
}
|
||||
|
||||
public User(String name, String email, String password) {
|
||||
this.name = name;
|
||||
this.email = email;
|
||||
this.password = password;
|
||||
createdAt = new Date();
|
||||
updatedAt = new Date();
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public Date getCreatedAt() {
|
||||
return createdAt;
|
||||
}
|
||||
|
||||
public void setCreatedAt(Date createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public Date getUpdatedAt() {
|
||||
return updatedAt;
|
||||
}
|
||||
|
||||
public void setUpdatedAt(Date updatedAt) {
|
||||
this.updatedAt = updatedAt;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Name: " + this.name
|
||||
+ "\nEmail: " + this.email;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
|
||||
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
|
||||
version="1.1" bean-discovery-mode="all">
|
||||
|
||||
</beans>
|
||||
@@ -0,0 +1,55 @@
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!50503 SET NAMES utf8mb4 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS `larablog` /*!40100 DEFAULT CHARACTER SET latin1 */;
|
||||
USE `larablog`;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `posts` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`post` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`author_id` int(11) DEFAULT NULL,
|
||||
`published` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`views` int(11) NOT NULL DEFAULT 0,
|
||||
`created_at` timestamp NULL DEFAULT NULL,
|
||||
`updated_at` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
DELETE FROM `posts`;
|
||||
/*!40000 ALTER TABLE `posts` DISABLE KEYS */;
|
||||
INSERT INTO `posts` (`id`, `title`, `post`, `author_id`, `published`, `views`, `created_at`, `updated_at`) VALUES
|
||||
(2, 'Sample Post 2', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc lobortis, ante in pretium volutpat, risus metus molestie odio, non placerat magna diam sit amet augue. Donec ullamcorper ornare mauris, id bibendum lacus viverra vel. Curabitur in pellentesque metus. Quisque gravida molestie turpis, id tincidunt purus viverra vitae. In sollicitudin, arcu at interdum sagittis, massa mi cursus diam, eu sodales purus erat vitae dui. Curabitur tempus urna consequat odio pretium pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tincidunt eros orci, sit amet pharetra eros accumsan vitae. Quisque a massa id nisi sodales rhoncus sed ut ante. Duis sed augue non velit feugiat varius eget eu velit. Nam commodo posuere massa sed convallis. Phasellus dapibus commodo lectus, vitae gravida lorem. Donec molestie a nisi ac mattis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam tempor ante et rutrum consequat.', 11, 1, 100, '2017-12-12 18:48:19', NULL),
|
||||
(3, 'Sample Post 3', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc lobortis, ante in pretium volutpat, risus metus molestie odio, non placerat magna diam sit amet augue. Donec ullamcorper ornare mauris, id bibendum lacus viverra vel. Curabitur in pellentesque metus. Quisque gravida molestie turpis, id tincidunt purus viverra vitae. In sollicitudin, arcu at interdum sagittis, massa mi cursus diam, eu sodales purus erat vitae dui. Curabitur tempus urna consequat odio pretium pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tincidunt eros orci, sit amet pharetra eros accumsan vitae. Quisque a massa id nisi sodales rhoncus sed ut ante. Duis sed augue non velit feugiat varius eget eu velit. Nam commodo posuere massa sed convallis. Phasellus dapibus commodo lectus, vitae gravida lorem. Donec molestie a nisi ac mattis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam tempor ante et rutrum consequat.', 11, 1, 100, '2017-12-12 18:48:22', NULL),
|
||||
(4, 'Sample Post 2212', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc lobortis, ante in pretium volutpat, risus metus molestie odio, non placerat magna diam sit amet augue. Donec ullamcorper ornare mauris, id bibendum lacus viverra vel. Curabitur in pellentesque metus. Quisque gravida molestie turpis, id tincidunt purus viverra vitae. In sollicitudin, arcu at interdum sagittis, massa mi cursus diam, eu sodales purus erat vitae dui. Curabitur tempus urna consequat odio pretium pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tincidunt eros orci, sit amet pharetra eros accumsan vitae. Quisque a massa id nisi sodales rhoncus sed ut ante. Duis sed augue non velit feugiat varius eget eu velit. Nam commodo posuere massa sed convallis. Phasellus dapibus commodo lectus, vitae gravida lorem. Donec molestie a nisi ac mattis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam tempor ante et rutrum consequat.', 11, 1, 100, '2017-12-12 18:48:24', NULL),
|
||||
(9, 'This is a Test', 'HJh sahjnasj hjas hjashj ashj ashj ashjsa sahjass naskjasnmas', 11, 0, 0, NULL, NULL),
|
||||
(10, 'Test Title', 'hjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj', 11, 0, 0, NULL, NULL),
|
||||
(11, 'Test Title 2', 'This is a as as sa asmas as as as as as', 11, 0, 0, NULL, NULL),
|
||||
(12, 'This is another Test Article', 'There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don\'t look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn\'t anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.', 11, 0, 0, '2017-12-14 03:48:52', '2017-12-14 03:48:52');
|
||||
/*!40000 ALTER TABLE `posts` ENABLE KEYS */;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `users` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`is_admin` int(10) unsigned NULL DEFAULT 0,
|
||||
`remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`created_at` timestamp NULL DEFAULT NULL,
|
||||
`updated_at` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `users_email_unique` (`email`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
DELETE FROM `users`;
|
||||
/*!40000 ALTER TABLE `users` DISABLE KEYS */;
|
||||
INSERT INTO `users` (`id`, `name`, `email`, `password`, `is_admin`, `remember_token`, `created_at`, `updated_at`) VALUES
|
||||
(11, 'Test User', '[email protected]', '$2a$10$i/TgIqC3xRMnqCEbDryfxuZqhfM/qekfsaQUjBVPUKiiB3Nofr/wO', 0, NULL, '2017-12-14 03:40:57', '2017-12-14 03:40:57');
|
||||
/*!40000 ALTER TABLE `users` ENABLE KEYS */;
|
||||
|
||||
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version = "1.0" encoding = "utf-8"?>
|
||||
<!DOCTYPE hibernate-configuration SYSTEM
|
||||
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
|
||||
<hibernate-configuration>
|
||||
<session-factory>
|
||||
<property name = "hibernate.dialect">
|
||||
org.hibernate.dialect.MySQLDialect
|
||||
</property>
|
||||
<property name = "hibernate.connection.driver_class">
|
||||
com.mysql.cj.jdbc.Driver
|
||||
</property>
|
||||
<property name = "hibernate.connection.url">
|
||||
jdbc:mysql://127.0.0.1:3306/larablog?serverTimezone=UTC
|
||||
</property>
|
||||
<property name="hibernate.connection.username">
|
||||
root
|
||||
</property>
|
||||
<property name = "hibernate.connection.password">
|
||||
root
|
||||
</property>
|
||||
<property name = "hibernate.show_sql">
|
||||
true
|
||||
</property>
|
||||
<property name = "hibernate.format_sql">
|
||||
true
|
||||
</property>
|
||||
|
||||
<mapping class="com.baeldung.models.User" />
|
||||
<mapping class="com.baeldung.models.Post" />
|
||||
</session-factory>
|
||||
</hibernate-configuration>
|
||||
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
|
||||
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
|
||||
|
||||
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
|
||||
<layout class="org.apache.log4j.PatternLayout">
|
||||
<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %5p [%-20c{1}] %m%n" />
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<category name="br.com.caelum">
|
||||
<priority value="INFO" />
|
||||
<appender-ref ref="stdout" />
|
||||
</category>
|
||||
|
||||
<category name="org.hibernate">
|
||||
<priority value="INFO" />
|
||||
<appender-ref ref="stdout" />
|
||||
</category>
|
||||
|
||||
<category name="org.jboss">
|
||||
<priority value="INFO" />
|
||||
<appender-ref ref="stdout" />
|
||||
</category>
|
||||
|
||||
<category name="freemarker.cache">
|
||||
<priority value="INFO" />
|
||||
<appender-ref ref="stdout" />
|
||||
</category>
|
||||
|
||||
<category name="freemarker.*">
|
||||
<priority value="INFO" />
|
||||
<appender-ref ref="stdout" />
|
||||
</category>
|
||||
|
||||
</log4j:configuration>
|
||||
@@ -0,0 +1,172 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<title>Clean Blog - Contact</title>
|
||||
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Theme CSS -->
|
||||
<link href="/css/clean-blog.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom Fonts -->
|
||||
<link href="/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-default navbar-custom navbar-fixed-top">
|
||||
<div class="container-fluid">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header page-scroll">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
Menu <i class="fa fa-bars"></i>
|
||||
</button>
|
||||
<a class="navbar-brand" href="/">Start Bootstrap</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li>
|
||||
<a href="/">Home</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/login">Login</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/register">Register</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /.navbar-collapse -->
|
||||
</div>
|
||||
<!-- /.container -->
|
||||
</nav>
|
||||
|
||||
<header class="intro-header" style="background-image: url('img/home-bg.jpg')">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<div class="site-heading">
|
||||
<h1>Clean Blog</h1>
|
||||
<hr class="small">
|
||||
<span class="subheading">A Clean Blog Theme by Start Bootstrap</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Main Content -->
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<p>Login</p>
|
||||
<h5 style="color:darkred;">${error!""} ${status!""}</h5>
|
||||
<form name="sentM" id="contactFo" action="/login" method="POST">
|
||||
<div class="row control-group">
|
||||
<div class="form-group col-xs-12 floating-label-form-group controls">
|
||||
<label>Email</label>
|
||||
<input type="email" class="form-control" placeholder="Email" id="user.email" name="user.email" required />
|
||||
<p class="help-block text-danger"></p>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="row control-group">
|
||||
<div class="form-group col-xs-12 floating-label-form-group controls">
|
||||
<label>Password</label>
|
||||
<input type="password" class="form-control" placeholder="Password" id="user.password" name="user.password" required />
|
||||
<p class="help-block text-danger"></p>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div id="success"></div>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-12">
|
||||
<button type="submit" class="btn btn-default">Login</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<ul class="list-inline text-center">
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-facebook fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="copyright text-muted">Copyright © Your Website 2016</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- jQuery -->
|
||||
<script src="/vendor/jquery/jquery.min.js"></script>
|
||||
|
||||
<!-- Bootstrap Core JavaScript -->
|
||||
<script src="/vendor/bootstrap/js/bootstrap.min.js"></script>
|
||||
|
||||
<!-- Contact Form JavaScript -->
|
||||
<script src="/js/jqBootstrapValidation.js"></script>
|
||||
<script src="/js/contact_me.js"></script>
|
||||
|
||||
<!-- Theme JavaScript -->
|
||||
<script src="/js/clean-blog.min.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,194 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<title>Clean Blog - Contact</title>
|
||||
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Theme CSS -->
|
||||
<link href="/css/clean-blog.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom Fonts -->
|
||||
<link href="/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-default navbar-custom navbar-fixed-top">
|
||||
<div class="container-fluid">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header page-scroll">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
Menu <i class="fa fa-bars"></i>
|
||||
</button>
|
||||
<a class="navbar-brand" href="index.html">Start Bootstrap</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li>
|
||||
<a href="/">Home</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/login">Login</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/register">Register</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /.navbar-collapse -->
|
||||
</div>
|
||||
<!-- /.container -->
|
||||
</nav>
|
||||
|
||||
<header class="intro-header" style="background-image: url('img/home-bg.jpg')">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<div class="site-heading">
|
||||
<h1>Clean Blog</h1>
|
||||
<hr class="small">
|
||||
<span class="subheading">A Clean Blog Theme by Start Bootstrap</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Main Content -->
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<p>Register</p>
|
||||
<h5 style="color:darkred;">${error!""} ${status!""}</h5>
|
||||
<#if errors??>
|
||||
<#list errors as error>
|
||||
<h5 style="color:darkred">${error.category?upper_case}: ${error.message}</h5>
|
||||
<#else>
|
||||
</#list>
|
||||
<#else>
|
||||
</#if>
|
||||
<form name="sentM" id="contactFo" action="/register" method="POST">
|
||||
<div class="row control-group">
|
||||
<div class="form-group col-xs-12 floating-label-form-group controls">
|
||||
<label>Name</label>
|
||||
<input type="text" class="form-control" placeholder="Name" id="user.name" name="user.name" required />
|
||||
<p class="help-block text-danger"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row control-group">
|
||||
<div class="form-group col-xs-12 floating-label-form-group controls">
|
||||
<label>Email</label>
|
||||
<input type="email" class="form-control" placeholder="Email" id="user.email" name="user.email" required />
|
||||
<p class="help-block text-danger"></p>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="row control-group">
|
||||
<div class="form-group col-xs-12 floating-label-form-group controls">
|
||||
<label>Email</label>
|
||||
<input type="password" class="form-control" placeholder="Password" id="user.password" name="user.password" required />
|
||||
<p class="help-block text-danger"></p>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="row control-group">
|
||||
<div class="form-group col-xs-12 floating-label-form-group controls">
|
||||
<label>Confirm</label>
|
||||
<input type="password" class="form-control" placeholder="Confirm Password" id="password_confirmation" name="password_confirmation" required />
|
||||
<p class="help-block text-danger"></p>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div id="success"></div>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-12">
|
||||
<button type="submit" class="btn btn-default">Submit</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<ul class="list-inline text-center">
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-facebook fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="copyright text-muted">Copyright © Your Website 2016</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- jQuery -->
|
||||
<script src="/vendor/jquery/jquery.min.js"></script>
|
||||
|
||||
<!-- Bootstrap Core JavaScript -->
|
||||
<script src="/vendor/bootstrap/js/bootstrap.min.js"></script>
|
||||
|
||||
<!-- Contact Form JavaScript -->
|
||||
<script src="/js/jqBootstrapValidation.js"></script>
|
||||
<script src="/js/contact_me.js"></script>
|
||||
|
||||
<!-- Theme JavaScript -->
|
||||
<script src="/js/clean-blog.min.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,173 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<title>Clean Blog</title>
|
||||
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Theme CSS -->
|
||||
<link href="/css/clean-blog.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom Fonts -->
|
||||
<link href="/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-default navbar-custom navbar-fixed-top">
|
||||
<div class="container-fluid">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header page-scroll">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
Menu <i class="fa fa-bars"></i>
|
||||
</button>
|
||||
<a class="navbar-brand" href="index.html">Start Bootstrap</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li>
|
||||
<a href="/">Home</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/login">Login</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/register">Register</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /.navbar-collapse -->
|
||||
</div>
|
||||
<!-- /.container -->
|
||||
</nav>
|
||||
|
||||
<!-- Page Header -->
|
||||
<!-- Set your background image for this header on the line below. -->
|
||||
<header class="intro-header" style="background-image: url('img/home-bg.jpg')">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<div class="site-heading">
|
||||
<h1>Clean Blog</h1>
|
||||
<hr class="small">
|
||||
<span class="subheading">A Clean Blog Theme by Start Bootstrap</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Main Content -->
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<h5 style="color:darkred;">${error!""} ${status!""}</h5>
|
||||
<#list posts as post>
|
||||
<div class="post-preview">
|
||||
<a href="/posts/${post.id}">
|
||||
<h2 class="post-title">
|
||||
${post.title}
|
||||
</h2>
|
||||
<h3 class="post-subtitle">
|
||||
<#if (post.post?length > 50) >${post.post?substring(0,50)} <#else> ${post.post} </#if>
|
||||
</h3>
|
||||
</a>
|
||||
<p class="post-meta">Posted by <a href="#">Start Bootstrap</a> on ${post.createdAt!''}</p>
|
||||
</div>
|
||||
<hr>
|
||||
<#else>
|
||||
<h2 class="post-title">
|
||||
NO POSTS YET!
|
||||
</h2>
|
||||
</#list>
|
||||
<!-- Pager -->
|
||||
<ul class="pager">
|
||||
<li class="next">
|
||||
<a href="/post/add">Add New Post</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<ul class="list-inline text-center">
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-facebook fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="copyright text-muted">Copyright © Your Website 2016</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- jQuery -->
|
||||
<script src="/vendor/jquery/jquery.min.js"></script>
|
||||
|
||||
<!-- Bootstrap Core JavaScript -->
|
||||
<script src="/vendor/bootstrap/js/bootstrap.min.js"></script>
|
||||
|
||||
<!-- Contact Form JavaScript -->
|
||||
<script src="/js/jqBootstrapValidation.js"></script>
|
||||
<script src="/js/contact_me.js"></script>
|
||||
|
||||
<!-- Theme JavaScript -->
|
||||
<script src="/js/clean-blog.min.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,164 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<title>Clean Blog - Contact</title>
|
||||
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Theme CSS -->
|
||||
<link href="/css/clean-blog.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom Fonts -->
|
||||
<link href="/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-default navbar-custom navbar-fixed-top">
|
||||
<div class="container-fluid">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header page-scroll">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
Menu <i class="fa fa-bars"></i>
|
||||
</button>
|
||||
<a class="navbar-brand" href="index.html">Start Bootstrap</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li>
|
||||
<a href="/">Home</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/login">Login</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/register">Register</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /.navbar-collapse -->
|
||||
</div>
|
||||
<!-- /.container -->
|
||||
</nav>
|
||||
|
||||
<!-- Main Content -->
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<p>Compose the Next Viral Message!</p>
|
||||
<h5 style="color:darkred;">${error!""} ${status!""}</h5>
|
||||
<#if errors??>
|
||||
<#list errors as error>
|
||||
<h5 style="color:darkred">${error.category?upper_case}: ${error.message}</h5>
|
||||
<#else>
|
||||
</#list>
|
||||
<#else>
|
||||
</#if>
|
||||
<form action="/post/add" method="POST">
|
||||
<div class="row control-group">
|
||||
<div class="form-group col-xs-12 floating-label-form-group controls">
|
||||
<label>Title</label>
|
||||
<input type="text" class="form-control" placeholder="Title" id="title" name="post.title" required />
|
||||
<p class="help-block text-danger"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row control-group">
|
||||
<div class="form-group col-xs-12 floating-label-form-group controls">
|
||||
<label>Post</label>
|
||||
<textarea rows="10" class="form-control" placeholder="Post" id="post" name="post.post" required></textarea>
|
||||
<p class="help-block text-danger"></p>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div id="success"></div>
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-12">
|
||||
<button type="submit" class="btn btn-default">Send</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<ul class="list-inline text-center">
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-facebook fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="copyright text-muted">Copyright © Your Website 2016</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- jQuery -->
|
||||
<script src="/vendor/jquery/jquery.min.js"></script>
|
||||
|
||||
<!-- Bootstrap Core JavaScript -->
|
||||
<script src="/vendor/bootstrap/js/bootstrap.min.js"></script>
|
||||
|
||||
<!-- Contact Form JavaScript -->
|
||||
<script src="/js/jqBootstrapValidation.js"></script>
|
||||
<script src="/js/contact_me.js"></script>
|
||||
|
||||
<!-- Theme JavaScript -->
|
||||
<script src="/js/clean-blog.min.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,152 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<title>Clean Blog - Sample Post</title>
|
||||
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Theme CSS -->
|
||||
<link href="/css/clean-blog.min.css" rel="stylesheet">
|
||||
|
||||
<!-- Custom Fonts -->
|
||||
<link href="/vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
|
||||
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
|
||||
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
|
||||
|
||||
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||||
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-default navbar-custom navbar-fixed-top">
|
||||
<div class="container-fluid">
|
||||
<!-- Brand and toggle get grouped for better mobile display -->
|
||||
<div class="navbar-header page-scroll">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
Menu <i class="fa fa-bars"></i>
|
||||
</button>
|
||||
<a class="navbar-brand" href="index.html">Start Bootstrap</a>
|
||||
</div>
|
||||
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li>
|
||||
<a href="/">Home</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/login">Login</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/register">Register</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">Contact</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- /.navbar-collapse -->
|
||||
</div>
|
||||
<!-- /.container -->
|
||||
</nav>
|
||||
|
||||
<!-- Page Header -->
|
||||
<!-- Set your background image for this header on the line below. -->
|
||||
<header class="intro-header" style="background-image: url('/img/post-bg.jpg')">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<div class="post-heading">
|
||||
<h1>${post.title}</h1>
|
||||
<span class="meta">Posted by <a href="#">Start Bootstrap</a> on ${post.createdAt!''}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Post Content -->
|
||||
<article>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<p>
|
||||
${post.post}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<hr>
|
||||
|
||||
<!-- Footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
|
||||
<ul class="list-inline text-center">
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-facebook fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="copyright text-muted">Copyright © Your Website 2016</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- jQuery -->
|
||||
<script src="/vendor/jquery/jquery.min.js"></script>
|
||||
|
||||
<!-- Bootstrap Core JavaScript -->
|
||||
<script src="/vendor/bootstrap/js/bootstrap.min.js"></script>
|
||||
|
||||
<!-- Contact Form JavaScript -->
|
||||
<script src="/js/jqBootstrapValidation.js"></script>
|
||||
<script src="/js/contact_me.js"></script>
|
||||
|
||||
<!-- Theme JavaScript -->
|
||||
<script src="/js/clean-blog.min.js"></script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,3 @@
|
||||
Manifest-Version: 1.0
|
||||
Class-Path:
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<!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>VRaptor Blank Project</title>
|
||||
</head>
|
||||
<body>
|
||||
It works!! JSP ${variable} ${linkTo[IndexController].index}
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:web="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
|
||||
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
|
||||
|
||||
<display-name>vraptor-blank-project</display-name>
|
||||
|
||||
<context-param>
|
||||
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
|
||||
<param-value>messages</param-value>
|
||||
</context-param>
|
||||
|
||||
<listener>
|
||||
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
|
||||
</listener>
|
||||
|
||||
</web-app>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 283 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 169 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 138 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user