SpringMVC Pipeline [A] part1
SpringMVC Project
- architecture: SpringMVC + myBatis + Spring + Bootstrap + jQuery Mobile
- Spring FrameWork : Spring MVC: Spring web or Struts : J2EE: JavaBean
- Persistent layer: MyBatis: iBatis: internet abatis: SQL Maps, Data Access Object (DAO)
- Boostrap: Less Language Dynamic Css: Css/HTML framework
- jQuery Mobile: jQuery
- MySQL: for RDBMS (Relational Database Management System
- Struts 2: popular
- Struts 1: deprecate
- Spring MVC: better than Struts 2
- Spring MVC: 1: DispatcherServlet: dispatch request to controller
- Spring MVC: 2: HandlerMapping: controller: a. BeanNameUrlHandlerMapping: controller name mapping
- Spring MVC: 2: HandlerMapping: controller: b. SimpleUrlHandlerMapping: url mapping
- Spring MVC: 2: HandlerMapping: controller: c. ControllerClassNameHandlerMapping: controller class mapping
- Spring MVC: 3: Controller: control request
- Spring MVC: 4: ModelAndView: Service return Model and View Encapsulated class
- Spring MVC: 5: ViewResolver: Model and View Encapsulated class
- Spring MVC: 6: Interceptors: intercept request for other processes
- install dynamic web on MyEclipse :
- help> install from site following: Eclipse Java EE Developer Tools ; Eclipse Java Web Developer Tools ; Eclipse Web Developer Tools ; Eclipse XML Editors and Tools ; JST Server Adapters ; JST Server Adapters Extensions
- or create dynamic web in IDEA
- file>project structure
- put under lib
- springmvc01
- LoginController.java
package com.abc.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse)
throws Exception {
String userName= httpServletRequest.getParameter("userName");
String userPw=httpServletRequest.getParameter("userPw");
System.out.println("LoginController.java: LoginController: springMvc Controller");
System.out.println("account:" +userName+":"+userPw);
ModelAndView modelAndView = new ModelAndView("index");
if("admin".equals(userName) && "123".equals(userPw)){
modelAndView.addObject("message","User Login Success");
} else {
modelAndView.addObject("message", "Login Fail");
}
return modelAndView;
}
}
- index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>abc</title>
</head>
<body>
<h1>${message}</h1>
</body>
</html>
- springMvc-servlet.xml
<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/context/
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd ">
<!--Controller-->
<bean id="LoginController" name="/Login.do" class="com.abc.controller.LoginController"></bean>
<!--mapping use name to find controller-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!--simple url mapping-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="Login1.do">LoginController</prop>
</props>
</property>
</bean>
<!-- view-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
- web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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/web-app_4_0.xsd"
version="4.0">
<display-name>springmvc01</display-name>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<!-- frontend controller-->
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
- login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login.jsp</title>
</head>
<body>
<!--Controller-->
<!--<form action="/Login.do">-->
<!--simple url mapping-->
<form action="/Login1.do">
account: <input type="text" name="userName"/><br/>
password: <input type="password" name="userPw"/><br/>
<input type="submit" value="login">
</form>
</body>
</html>
-
spring MVC steps:
-
- put jars under WEB-INF/lib
-
- web.xml, add frontend Servlet
-
- create spring-servlet.xml beans: springMvc controller, Model and View,
-
- edit LoginController.java inherit AbstractController (handleRequestInternal), return Model and View (“index”)
-
- edit index.jsp show Model and view result
-
ERROR: :org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 24 in XML document from ServletContext resource [/WEB-INF/dispatcher-servlet.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 24; columnNumber: 61; cvc-complex-type.2.4.c: 通配符的匹配很全面, 但无法找到元素 ‘context:component-scan’ 的声明。
-
solve: bean address change to
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.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">
- springmvc03
- UserInfo.java
package com.abc.domain;
import java.util.Arrays;
import java.util.Date;
public class UserInfo {
private Integer userId;
private String userPw;
private String userName;
private Integer userAge;
private Date userBday;
private String[] hobby;
public UserInfo() {}
public UserInfo(Integer userId, String userPw, String userName,
Integer userAge, Date userBday, String[] hobby) {
this.userId = userId;
this.userPw = userPw;
this.userName = userName;
this.userAge = userAge;
this.userBday = userBday;
this.hobby = hobby;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserPw() {
return userPw;
}
public void setUserPw(String userPw) {
this.userPw = userPw;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getUserAge() {
return userAge;
}
public void setUserAge(Integer userAge) {
this.userAge = userAge;
}
public Date getUserBday() {
return userBday;
}
public void setUserBday(Date userBday) {
this.userBday = userBday;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "UserInfo{" +
"userId=" + userId +
", userPw='" + userPw + '\'' +
", userName='" + userName + '\'' +
", userAge=" + userAge +
", userBday=" + userBday +
", hobby=" + Arrays.toString(hobby) +
'}';
}
}
- RegController.java
package com.abc.servlet;
import com.abc.domain.UserInfo;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.Date;
//same as create class controller
@Controller
@RequestMapping(value = "sys/")
public class RegController {
//test
@RequestMapping(value="reg.do")
public String reg() {
System.out.println("RegController.reg(): User Registration*****");
return "index";
}
//get userId, userPw
@RequestMapping(value="reg1.do")
public String reg1(HttpServletRequest request) {
System.out.println("request.getParameterNames()");
System.out.println(request.getParameterNames());
System.out.println("userId");
System.out.println(request.getParameter("userId"));
System.out.println("userPw");
System.out.println(request.getParameter("userPw"));
return "index";
}
//get userName
@RequestMapping(value="reg2.do")
public String reg2(String userName){
System.out.println("username");
System.out.println(userName);
return "index";
}
//get Integer
@RequestMapping(value="reg3.do")
public String reg3(Integer userId, String userName, Date userBday){
System.out.println("userId");
System.out.println(userId);
System.out.println("username");
System.out.println(userName);
System.out.println("userBday");
System.out.println(userBday);
return "index";
}
//get hobby
@RequestMapping(value="reg4.do")
public String reg4(String[] hobby){
System.out.println("hobbies");
for(String h:hobby){
System.out.println(h);
}
return "index";
}
//get UserInfo
@RequestMapping(value="reg5.do")
public String reg5(UserInfo userInfo){
System.out.println(userInfo.toString());
return "index";
}
//time parse
@InitBinder
public void InitBinder(ServletRequestDataBinder bind){
bind.registerCustomEditor(Date.class, new CustomDateEditor(
new SimpleDateFormat("yyyy-MM-dd"),true));
}
}
- index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>abc</title>
</head>
<body>
<h1>User Login Success</h1>
</body>
</html>
- dispatcher-servlet.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd ">
<!--springmvc annotation-->
<mvc:annotation-driven/>
<!--springmvc component-->
<context:component-scan base-package="com.abc.servlet"/>
<!-- view-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
- web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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/web-app_4_0.xsd"
version="4.0">
<display-name>springmvc02</display-name>
<welcome-file-list>
<welcome-file>reg.jsp</welcome-file>
</welcome-file-list>
<!-- dispatcher -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- filter-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
- reg.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>reg.jsp</title>
</head>
<body>
<form action="sys/reg5.do" medthod="post" >
account: <input type="text" name="userId"/><br/>
password: <input type="password" name="userPw"/><br/>
name: <input type="text" name="userName"/><br/>
age: <input type="text" name="userAge"/><br/>
birthday: <input type="text" name="userBday"/><br/>
hobbies:<br/>
<input type="checkbox" name="hobby" value="music"/>music
<input type="checkbox" name="hobby" value="film"/>film
<input type="checkbox" name="hobby" value="sports"/>sports<br/>
<input type="submit" value="login">
</form>
</body>
</html>
- GET
- POST
- Error: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [D:\IJ\springmvc03\out\artifacts\springmvc03_war_exploded\WEB-INF\classes\com\abc\servlet\RegController.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 1612
- solve:
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
- springmvc04
- SpringMVC return values
-
- HttpServletRequest
-
- ModelAndView
-
- Map<String, Object> map
-
- Model model
- Model model
- UserInfoController.java
package com.abc.controller;
import com.abc.domain.UserInfo;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class UserInfoController {
// 1.HttpServletRequest return value:
@RequestMapping("/query1.do")
public String query(HttpServletRequest request) {
String name = "bob";
request.setAttribute("name", name);
UserInfo user = new UserInfo();
user.setUserId(1234);
user.setUserName("abe");
request.setAttribute("user", user);
return "index";
}
// 2.ModelandView return value:
@RequestMapping("/query2.do")
public ModelAndView query2() {
UserInfo user = new UserInfo();
user.setUserId(4321);
user.setUserName("sam");
Map<String, Object> map = new HashMap<String, Object>();
map.put("user2", user);
return new ModelAndView("index", map);
}
// 3. Map return value:
@RequestMapping("/query3.do")
public String query3(Map<String, Object> map) {
UserInfo user = new UserInfo();
user.setUserId(1111);
user.setUserName("avi");
map.put("user3", user);
return "index";
}
// 4. Model return value:
@RequestMapping("/query4.do")
public String query4(Model model) {
UserInfo user = new UserInfo();
user.setUserId(2222);
user.setUserName("eva");
model.addAttribute("user4", user);
return "index";
}
// 5. Model return list:
@RequestMapping("/query5.do")
public String query5(Model model) {
UserInfo user = new UserInfo();
user.setUserId(333);
user.setUserName("flo");
List<UserInfo> list = new ArrayList<UserInfo>();
list.add(user);
list.add(user);
list.add(user);
model.addAttribute("list",list);
return "index";
}
}
- UserInfo
package com.abc.domain;
public class UserInfo {
private Integer userId;
private String userName;
public UserInfo() {
}
public UserInfo(Integer userId, String userName) {
this.userId = userId;
this.userName = userName;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "UserInfo{" +
"userId=" + userId +
", userName='" + userName + '\'' +
'}';
}
}
- dispatcher-servlet.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd ">
<!--springmvc annotation-->
<mvc:annotation-driven/>
<!--springmvc component-->
<context:component-scan base-package="com.abc.controller"/>
<!-- view-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
- web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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/web-app_4_0.xsd"
version="4.0">
<display-name>springmvc03</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- dispatcher -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- filter-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
- index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>abc</title>
</head>
<body>
<hr/>
1.HttpServletRequest return value: <br/>
<form action="query1.do" method="post">
<input type="submit" value="search"><br/>
</form>
<br/>
name:${name}<br/>
userId:${user.userId}<br/>
userName:${user.userName}<br/>
<hr/>
2.ModelandView return value: <br/>
<form action="query2.do" method="post">
<input type="submit" value="search"><br/>
</form>
<br/>
userId:${user2.userId}<br/>
userName:${user2.userName}<br/>
<hr/>
3. Map return value: <br/>
<form action="query3.do" method="post">
<input type="submit" value="search"><br/>
</form>
<br/>
userId:${user3.userId}<br/>
userName:${user3.userName}<br/>
<hr/>
4. Model return value: <br/>
<form action="query4.do" method="post">
<input type="submit" value="search"><br/>
</form>
<br/>
userId:${user4.userId}<br/>
userName:${user4.userName}<br/>
<hr/>
5. Model return list: <br/>
<form action="query5.do" method="post">
<input type="submit" value="search"><br/>
</form>
<br/>
List: ${list}<br/>
</body>
</html>
-
@ResponseBody
-
HttpMessageConverter
-
StringHttpMessageConverter (/, text/*)
-
MappingJacksonHttpMessageConverter (change to JSON: user ObjectMapper from Jackson to map JSON onto JavaBean, must use Jackson Jar)
-
JSON Converter (String Converter
<!-- stringConverter -->
<bean id="stringConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- json converter -->
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="stringConverter"/>
<ref bean="jsonConverter"/>
</list>
</property>
</bean>
- springmvcajax
- RegController.java
package com.abc.controller;
import com.abc.domain.UserInfo;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
@Controller
public class RegController {
@RequestMapping("ajax1.do")
public void ajax1(String uId, HttpServletResponse response) {
System.out.println(uId);
try {
//response
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
if ("admin".equals(uId)) {
out.println("account exist, try again");
} else {
out.println("success");
}
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@RequestMapping("/ajax2.do")
public @ResponseBody
UserInfo ajax2(String uId) {
System.out.println(uId);
UserInfo user = new UserInfo();
if ("111".equals(uId)) {
user.setUserId(111);
user.setUserName("bob");
} else {
user.setUserId(222);
user.setUserName("sam");
}
return user;
}
@RequestMapping("/ajax3.do")
public @ResponseBody List<UserInfo> ajax3() {
List<UserInfo> list = new ArrayList<UserInfo>();
UserInfo user1 = new UserInfo();
user1.setUserId(111);
user1.setUserName("bob");
list.add(user1);
UserInfo user2 = new UserInfo();
user2.setUserId(112);
user2.setUserName("bob2");
list.add(user2);
UserInfo user3 = new UserInfo();
user3.setUserId(113);
user3.setUserName("bob3");
list.add(user3);
System.out.println(list.toString());
return list;
}
}
- UserInfo.java
package com.abc.domain;
public class UserInfo {
private Integer userId;
private String userName;
public UserInfo(){}
public UserInfo(Integer userId, String userName) {
this.userId = userId;
this.userName = userName;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
- dispatcher-servlet.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd ">
<!--springmvc annotation-->
<mvc:annotation-driven/>
<!--springmvc component-->
<context:component-scan base-package="com.abc.controller"/>
<!-- view-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- stringConverter -->
<bean id="stringConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- json converter -->
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="stringConverter"/>
<ref bean="jsonConverter"/>
</list>
</property>
</bean>
</beans>
- web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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/web-app_4_0.xsd"
version="4.0">
<display-name>springmvc03</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- dispatcher -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- filter-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
- reg.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<script type="text/javascript" src="js/jquery-3.3.1.js"></script>
<script type="text/javascript">
$().ready(function () {
//ajax1.do
$("#b1").click(function () {
var userId = $("#userId").val();
if (userId.length != 0) {
alert(userId)
$.post('ajax1.do', {uId: userId}, function (data) {
alert(data);
});
} else {
alert("enter info");
}
});
//ajax2.do
$("#b2").click(function () {
$.post("ajax2.do", {uId: $("#userId2").val()}, function (data) {
alert(data.userId+":"+data.userName);
$("#info2").html(data.userId+":"+data.userName);
}, "json");
});
//ajax3.do
$("#b3").click(function () {
alert("ajax3.do");
$.post("ajax3.do",{}, function (data) {
var str= "";
for(var i=0; i<data.length; i++){
str+="userId: "+data[i].userId+": userName" +data[i].userName+"<br/>";
}
$("#info3").html(str);
}, "json");
});
});
</script>
</head>
<body>
<hr/>
<form action="">
account search admin: <input type="text" id="userId" name="userId">
<input type="button" id="b1" value="check">
</form>
<hr/>
<form action="">
account search userId(111): <input type="text" id="userId2" name="userId2">
<input type="button" id="b2" value="search">
<div id="info2"></div>
</form>
<hr/>
<form action="">
account search all info:
<input type="button" id="b3" value="search">
<div id="info3"></div>
</form>
<hr/>
</body>
</html>
- File upload: .fileupload.jar & loggin.jar: in jsp: form: enctype=“multipart/form-data”: add into spring.xml: multipartResolver bean, then add following to contoller:
- ERROR: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [D:\IJ\springmvcUpload\out\artifacts\springmvcUpload_war_exploded\WEB-INF\classes\com\abc\controller\RegController.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 1612
- solve: wrong realPath, also do not add "string " to system.out.println(object) ???not sure why… cannot concat string
- directly enter path for fileout
- springmvcUpload ( unsuccessful: maybe springframework and jdk has conflict? cannot concat strings properly…upload sort of works, better example in Spring MVC MyBatis [A]
- RegController.java
package com.abc.controller;
import com.abc.domain.UserInfo;
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 org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
@Controller
public class RegController {
@RequestMapping(value = "/upload.do", method = RequestMethod.POST)
public String upload(UserInfo user, HttpServletRequest req, Model model) {
System.out.println(user);
System.out.println(req);
System.out.println(model);
//change MultipartHttpServletRequest request
MultipartHttpServletRequest request = (MultipartHttpServletRequest) req;
System.out.println(request);
//get file
CommonsMultipartFile cmfile = (CommonsMultipartFile) request.getFile("userImg");
System.out.println(cmfile);
//get file bytes
byte[] b = cmfile.getBytes();
System.out.println(b);
//get filename
String ofileName = cmfile.getOriginalFilename();
System.out.println(ofileName);
String suffix = ofileName.substring(ofileName.lastIndexOf("."));
System.out.println(suffix);
//getpath
String path = req.getSession().getServletContext().getRealPath("/");
System.out.println(path);
//write to folder
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String fname = sdf.format(date);
System.out.println(fname);
System.out.print(path);
System.out.print(fname);
System.out.print(suffix);
try {
OutputStream os = new FileOutputStream("D:/IJ/springmvcUpload/out/artifacts/springmvcUpload/20210422163702431.jpg");
// OutputStream os = new FileOutputStream(path+fname+suffix);
System.out.println(os.toString());
os.write(b);
os.flush();
os.close();
user.setUrl("D:/IJ/springmvcUpload/out/artifacts/springmvcUpload/20210422163702431.jpg");
model.addAttribute("user",user);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "reg";
}
}
- UserInfo.java
package com.abc.domain;
public class UserInfo {
private String userId;
private String userName;
private String url;
private Integer userAge;
public UserInfo(){}
public UserInfo(String userId, String userName, String url, Integer userAge) {
this.userId = userId;
this.userName = userName;
this.url = url;
this.userAge = userAge;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Integer getUserAge() {
return userAge;
}
public void setUserAge(Integer userAge) {
this.userAge = userAge;
}
@Override
public String toString() {
return "UserInfo{" +
"userId='" + userId + '\'' +
", userName='" + userName + '\'' +
", url='" + url + '\'' +
", userAge=" + userAge +
'}';
}
}
- dispatcher-servlet.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd ">
<!--springmvc annotation-->
<mvc:annotation-driven/>
<!--springmvc component-->
<context:component-scan base-package="com.abc.controller"/>
<!-- view-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- fileupload, must be named multipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1024000"></property>
</bean>
</beans>
- web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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/web-app_4_0.xsd"
version="4.0">
<display-name>springmvc03</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- dispatcher -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- filter-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
- reg.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="upload.do" method="post" enctype="multipart/form-data">
<h1>registration</h1><br/>
account: <input type="text" name="userId"><br/>
name: <input type="text" name="userName"><br/>
file: <input type="file" name="userImg"><br/>
age: <input type="text" name="userAge"><br/>
<input type="submit" value="submit">
</form>
<hr/>
${user}
<div/>
</body>
</html>
- Interceptor: HandlerInterceptor
-
springmvcInterceptor
-
TestController
package com.abc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class TestController {
@RequestMapping("test.do" )
public String test(){
System.out.println("this is controller");
return "index";
}
}
- MyInterceptor
package com.abc.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Object o)
throws Exception {
System.out.println("preHandle:MyInterceptor");
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Object o,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle:MyInterceptor");
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object o, Exception e) throws Exception {
System.out.println("afterCompletion:MyInterceptor");
}
}
- MyInterceptor1
package com.abc.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor1 implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Object o)
throws Exception {
System.out.println("preHandle:MyInterceptor1");
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Object o,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle:MyInterceptor1");
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object o, Exception e) throws Exception {
System.out.println("afterCompletion:MyInterceptor1");
}
}
- dispatcher-servlet.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd ">
<!--springmvc annotation-->
<mvc:annotation-driven/>
<!--springmvc component-->
<context:component-scan base-package="com.abc.controller"/>
<!-- view-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- stringConverter -->
<bean id="stringConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
<!--interceptor-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/*"/>
<bean class="com.abc.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/*"/>
<bean class="com.abc.interceptor.MyInterceptor1"></bean>
</mvc:interceptor>
</mvc:interceptors>
</beans>
- web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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/web-app_4_0.xsd"
version="4.0">
<display-name>springmvc03</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- dispatcher -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- filter-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
- index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="test.do" method="post">
<input type="submit" value="test"/>
</form>
<% System.out.println("view");%>
</body>
</html>
- Mysql
- user ipconfig to find ip then use it as the name and address for a connection, set root computer to % then can be used
- use backup to copy table then paste it into another database
- MyBatis : ORM: Object–relational mapping
- JDBC: Java DataBase Connectivity
- mybatis structure:
-
- copy jar under lib folder (mybatis, mysql-connector)
-
- create mybatis-config.xml, add sql connection info:
<environments default="development">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/abc"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</dataSource>
</environment>
</environments>
-
- create UserInfo class with attributes from sql, then generate get set methods
-
- create userinfo.xml with mappers for sql query
<mapper namespace="com.abc.domain.UserInfo">
create namesapce
edit sql
select * from user_info where user_id=#{userId}
edit resultMap class(attribute) map it onto sql database table
<resultMap type="com.abc.domain.UserInfo" id="userinfo">
<result column="user_id" property="user_id"/>
<result column="user_name" property="user_name"/>
<result column="user_age" property="user_age"/>
<result column="user_sex" property="sex"/>
<result column="user_bday" property="user_bday"/>
</resultMap>
-
- sql mapper (userinfo.xml) added to mybatis-config.xml
<mappers>
<mapper resource="com/abc/domain/userinfo.xml"/>
</mappers>
-
- create test file
InputStream is=Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
SqlSession session = ssf.openSession();
UserInfo user = (UserInfo) session.selectOne("com.abc.domain.UserInfo.queryUser", 3);
System.out.println(user.toString());
- mybatis01
- UserInfo.java
package com.abc.domain;
import java.util.Date;
public class UserInfo {
private Integer user_id;
private String user_name;
private Integer user_age;
private String sex;
private Date user_bday;
public UserInfo() {}
public UserInfo(Integer user_id, String user_name, Integer user_age, String sex, Date user_bday) {
this.user_id = user_id;
this.user_name = user_name;
this.user_age = user_age;
this.sex = sex;
this.user_bday = user_bday;
}
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public Integer getUser_age() {
return user_age;
}
public void setUser_age(Integer user_age) {
this.user_age = user_age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getUser_bday() {
return user_bday;
}
public void setUser_bday(Date user_bday) {
this.user_bday = user_bday;
}
@Override
public String toString() {
return "UserInfo{" +
"user_id=" + user_id +
", user_name='" + user_name + '\'' +
", user_age=" + user_age +
", sex='" + sex + '\'' +
", user_bday=" + user_bday +
'}';
}
}
- userinfo.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.abc.domain.UserInfo">
<resultMap type="com.abc.domain.UserInfo" id="userinfo">
<result column="user_id" property="user_id"/>
<result column="user_name" property="user_name"/>
<result column="user_age" property="user_age"/>
<result column="user_sex" property="sex"/>
<result column="user_bday" property="user_bday"/>
</resultMap>
<select id="queryUser" resultMap="userinfo" parameterType="java.lang.Integer">
select * from user_info where user_id=#{user_id}
</select>
</mapper>
- mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- mysql-->
<environments default="development">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/abc"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/abc/domain/userinfo.xml"/>
</mappers>
</configuration>
- Test.java
package com;
import com.abc.domain.UserInfo;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class Test {
public static void main(String[] args) throws IOException {
// create sqlsessionfactory from xml
InputStream is=Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
//get session
SqlSession session = ssf.openSession();
//get info from userinfo.xml
UserInfo user = (UserInfo) session.selectOne("com.abc.domain.UserInfo.queryUser", 3);
System.out.println(user.toString());
}
}
- mybatis02
- add log4j.jar file to lib
- UserInfoDAOImpl.java
package com.abc.dao.impl;
import com.abc.dao.UserInfoDAO;
import com.abc.domain.UserInfo;
import com.abc.utils.DBFactory;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class UserInfoDAOImpl implements UserInfoDAO {
@Override
public int addUser(UserInfo user) {
//get session
SqlSession session = null;
try {
session = DBFactory.getSession();
System.out.println("session:" + session);
System.out.println(user.toString());
int count = session.insert("com.abc.domain.UserInfo.adduser", user);
System.out.println("count:" + count);
//commit
session.commit();
return count;
} catch (Exception e) {
e.printStackTrace();
session.rollback();
} finally {
session.close();
}
return 0;
}
@Override
public int update(UserInfo user) {
SqlSession session = null;
try {
session = DBFactory.getSession();
int count = session.update("com.abc.domain.UserInfo.updateuser", user);
session.commit();
return count;
} catch (Exception e) {
e.printStackTrace();
session.rollback();
} finally {
session.close();
}
return 0;
}
@Override
public int delete(Integer user) {
SqlSession session = null;
try {
System.out.println("user:" + user);
session = DBFactory.getSession();
int count = session.delete("com.abc.domain.UserInfo.deleteuser", user);
session.commit();
return count;
} catch (Exception e) {
e.printStackTrace();
session.rollback();
} finally {
session.close();
}
return 0;
}
@Override
public UserInfo getUser(Integer userId) {
SqlSession session = null;
try {
session = DBFactory.getSession();
UserInfo userInfo =(UserInfo)session.selectOne(
"com.abc.domain.UserInfo.selectUser",userId);
session.commit();
return userInfo;
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
return null;
}
@Override
public List<UserInfo> getAllUsers() {
SqlSession session = null;
try {
session = DBFactory.getSession();
List<UserInfo> users = session.selectList("com.abc.domain.UserInfo.selectallUsers");
session.commit();
return users;
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
return null;
}
}
- UserInfoDAO.java
package com.abc.dao;
import com.abc.domain.UserInfo;
import java.util.List;
public interface UserInfoDAO {
public int addUser(UserInfo user);
public int update(UserInfo user);
public int delete(Integer user);
public UserInfo getUser(Integer userId);
public List<UserInfo> getAllUsers();
}
- UserInfo.java
package com.abc.domain;
import java.util.Date;
public class UserInfo {
private Integer user_id;
private String user_name;
private Integer user_age;
private String sex;
private Date user_bday;
public UserInfo() {}
public UserInfo(Integer user_id, String user_name, Integer user_age, String sex, Date user_bday) {
this.user_id = user_id;
this.user_name = user_name;
this.user_age = user_age;
this.sex = sex;
this.user_bday = user_bday;
}
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public Integer getUser_age() {
return user_age;
}
public void setUser_age(Integer user_age) {
this.user_age = user_age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getUser_bday() {
return user_bday;
}
public void setUser_bday(Date user_bday) {
this.user_bday = user_bday;
}
@Override
public String toString() {
return "UserInfo{" +
"user_id=" + user_id +
", user_name='" + user_name + '\'' +
", user_age=" + user_age +
", sex='" + sex + '\'' +
", user_bday=" + user_bday +
'}';
}
}
- userinfo.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.abc.domain.UserInfo">
<resultMap type="userInfo" id="userMap">
<result column="user_id" property="user_id"/>
<result column="user_name" property="user_name"/>
<result column="user_age" property="user_age"/>
<result column="user_sex" property="sex"/>
<result column="user_bday" property="user_bday"/>
</resultMap>
<insert id="adduser" parameterType="userInfo">
insert into user_info(user_id,user_name, user_age, user_sex, user_bday)
values(#{user_id},#{user_name},#{user_age},#{sex},now())
</insert>
<update id="updateuser" parameterType="userInfo">
update user_info set user_name=#{user_name},
user_age=#{user_age}, user_sex=#{sex}, user_bday=now()
where user_id=#{user_id}
</update>
<delete id="deleteuser" parameterType="java.lang.Integer">
delete from user_info where user_id=#{user}
</delete>
<select id="selectUser" resultMap="userMap" parameterType="java.lang.Integer">
select * from user_info where user_id=#{userId}
</select>
<select id="selectallUsers" resultMap="userMap" parameterType="java.lang.Integer">
select * from user_info
</select>
</mapper>
- DBFactory.java
package com.abc.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
public class DBFactory {
public static SqlSessionFactory sqlSessionFactory = null;
static {
//create sqlsessionfactory from xml
InputStream resource = null;
try {
resource = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("resource:"+resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resource);
System.out.println("sqlSessionFactory:"+sqlSessionFactory);
}
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
}
- log4j.properties
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [$t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connector=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
- mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- mysql-->
<typeAliases>
<typeAlias type="com.abc.domain.UserInfo" alias="userInfo"/>
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/abc"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/abc/domain/userinfo.xml"/>
</mappers>
</configuration>
- UserInfoTest.java
package com.abc.dao;
import com.abc.dao.impl.UserInfoDAOImpl;
import com.abc.domain.UserInfo;
import org.junit.Test;
import java.util.List;
public class UserInfoTest {
@Test
public void add() {
UserInfoDAO dao = new UserInfoDAOImpl();
UserInfo user = new UserInfo();
user.setUser_name("bob");
user.setUser_age(33);
user.setSex("m");
int i = dao.addUser(user);
if (i > 0) {
System.out.println("success");
} else {
System.out.println("fail");
}
}
@Test
public void update() {
UserInfoDAO dao = new UserInfoDAOImpl();
UserInfo user = new UserInfo();
user.setUser_name("sam");
user.setUser_age(66);
user.setSex("m");
int i = dao.update(user);
if (i > 0) {
System.out.println("success");
} else {
System.out.println("fail");
}
}
@Test
public void delete() {
UserInfoDAO dao = new UserInfoDAOImpl();
int i = dao.delete(8);
System.out.println(i);
if (i > 0) {
System.out.println("success");
} else {
System.out.println("fail");
}
}
@Test
public void select() {
UserInfoDAO dao = new UserInfoDAOImpl();
UserInfo u = dao.getUser(9);
System.out.println(u.toString());
}
@Test
public void selectAll() {
UserInfoDAO dao = new UserInfoDAOImpl();
List<UserInfo> listU = dao.getAllUsers();
for (UserInfo u:listU) {
System.out.println(u);
}
}
}
- mybatis03
- log4j.properties
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [$t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connector=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
- mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- mysql-->
<typeAliases>
<typeAlias type="com.abc.domain.UserInfo" alias="userInfo"/>
</typeAliases>
<environments default="mysql">
<!-- id="oracle"-->
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/abc"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/abc/mapper/userinfo.xml"/>
</mappers>
</configuration>
- UserInfo.java
package com.abc.domain;
import java.util.Date;
public class UserInfo {
private Integer user_id;
private String user_name;
private Integer user_age;
private String sex;
private Date user_bday;
public UserInfo() {}
public UserInfo(Integer user_id, String user_name, Integer user_age, String sex, Date user_bday) {
this.user_id = user_id;
this.user_name = user_name;
this.user_age = user_age;
this.sex = sex;
this.user_bday = user_bday;
}
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public Integer getUser_age() {
return user_age;
}
public void setUser_age(Integer user_age) {
this.user_age = user_age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getUser_bday() {
return user_bday;
}
public void setUser_bday(Date user_bday) {
this.user_bday = user_bday;
}
@Override
public String toString() {
return "UserInfo{" +
"user_id=" + user_id +
", user_name='" + user_name + '\'' +
", user_age=" + user_age +
", sex='" + sex + '\'' +
", user_bday=" + user_bday +
'}';
}
}
- userinfo.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.abc.mapper.UserInfoMapper">
<!--1. namespace points to Interface
2. interface methods must have the same name as sql id name-->
<resultMap type="userInfo" id="userMap">
<result column="user_id" property="user_id"/>
<result column="user_name" property="user_name"/>
<result column="user_age" property="user_age"/>
<result column="user_sex" property="sex"/>
<result column="user_bday" property="user_bday"/>
</resultMap>
<insert id="addUser" parameterType="userInfo">
insert into user_info(user_id,user_name, user_age, user_sex, user_bday)
values(#{user_id},#{user_name},#{user_age},#{sex},now())
</insert>
<update id="update" parameterType="userInfo">
update user_info set user_name=#{user_name},
user_age=#{user_age}, user_sex=#{sex}, user_bday=now()
where user_id=#{user_id}
</update>
<delete id="delete" parameterType="java.lang.Integer">
delete from user_info where user_id=#{user}
</delete>
<select id="getUser" resultMap="userMap" parameterType="java.lang.Integer">
select * from user_info where user_id=#{userId}
</select>
<select id="getAllUser" resultMap="userMap" parameterType="java.lang.Integer">
select * from user_info
</select>
</mapper>
- UserInfoMapper.java
package com.abc.mapper;
import com.abc.domain.UserInfo;
import java.util.List;
public interface UserInfoMapper {
//addUser
public int addUser(UserInfo user);
//update
public int update(UserInfo user);
//delete
public int delete(Integer userId);
//query
public UserInfo getUser(Integer userId);
//List
public List<UserInfo> getAllUser();
}
- DBFactory.java
package com.abc.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class DBFactory {
public static SqlSessionFactory sqlSessionFactory = null;
static {
//create sqlsessionfactory from xml
InputStream resource = null;
try {
resource = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("resource:"+resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resource);
System.out.println("sqlSessionFactory:"+sqlSessionFactory);
}
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
}
- UserInfoTest.java
package mybatis03;
import com.abc.domain.UserInfo;
import com.abc.mapper.UserInfoMapper;
import com.abc.utils.DBFactory;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserInfoTest {
//use namespace
@Test
public void add1() {
SqlSession session = DBFactory.getSession();
UserInfo user = new UserInfo();
user.setUser_id(30);
user.setUser_name("bob30");
int i = session.insert("com.abc.mapper.UserInfoMapper.addUser", user);
session.commit();
if (i > 0) {
System.out.println("success");
}
session.close();
}
//user interface
@Test
public void add2() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
UserInfo user = new UserInfo();
user.setUser_id(31);
user.setUser_name("bob31");
int i = mapper.addUser(user);
session.commit();
if (i > 0) {
System.out.println("success");
}
session.close();
}
//update
@Test
public void update() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
UserInfo user = new UserInfo();
user.setUser_id(31);
user.setUser_name("sam31");
int i = mapper.update(user);
session.commit();
if (i > 0) {
System.out.println("success");
}
session.close();
}
//delete
@Test
public void delete() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
int user_id = 31;
int i = mapper.delete(user_id);
session.commit();
if (i > 0) {
System.out.println("success");
}
session.close();
}
//getUser
@Test
public void getUser() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
int user_id = 30;
UserInfo user = mapper.getUser(user_id);
session.commit();
System.out.println(user.toString());
session.close();
}
//getAllUser
@Test
public void getAllUser() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
int user_id = 30;
List<UserInfo> list = mapper.getAllUser();
session.commit();
for (UserInfo u : list) {
System.out.println(u);
}
session.close();
}
}
- mybatis04
- UserInfo.java
package com.abc.domain;
import java.util.Date;
public class UserInfo {
private Integer user_id;
private String user_name;
private Integer user_age;
private String sex;
private Date user_bday;
public UserInfo() {}
public UserInfo(Integer user_id, String user_name, Integer user_age, String sex, Date user_bday) {
this.user_id = user_id;
this.user_name = user_name;
this.user_age = user_age;
this.sex = sex;
this.user_bday = user_bday;
}
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public Integer getUser_age() {
return user_age;
}
public void setUser_age(Integer user_age) {
this.user_age = user_age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getUser_bday() {
return user_bday;
}
public void setUser_bday(Date user_bday) {
this.user_bday = user_bday;
}
@Override
public String toString() {
return "UserInfo{" +
"user_id=" + user_id +
", user_name='" + user_name + '\'' +
", user_age=" + user_age +
", sex='" + sex + '\'' +
", user_bday=" + user_bday +
'}';
}
}
- userinfo.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.abc.mapper.UserInfoMapper">
</mapper>
- UserInfoMapper.java
package com.abc.mapper;
import com.abc.domain.UserInfo;
import org.apache.ibatis.annotations.*;
import java.util.HashMap;
import java.util.List;
public interface UserInfoMapper {
//addUser
@Insert("insert into user_info(user_id,user_name, user_age, user_sex, user_bday)" +
" values(#{user_id},#{user_name},#{user_age},#{sex},now())")
public int addUser(UserInfo user);
//update
@Update("update user_info set user_name=#{user_name},user_age=#{user_age}," +
" user_sex=#{sex}, user_bday=now() where user_id=#{user_id}")
public int update(UserInfo user);
//delete
@Delete("delete from user_info where user_id=#{user}")
public int delete(Integer userId);
//query
@Select("select * from user_info where user_id=#{userId}")
@Results(value = {@Result(property = "user_id", column = "user_id"),
@Result(property = "user_name", column = "user_name"),
@Result(property = "user_age", column = "user_age"),
@Result(property = "sex", column = "user_sex"),
@Result(property = "user_bday", column = "user_bday"),})
public UserInfo getUser(@Param("userId")Integer userId);
//List
@Select("select * from user_info")
@Results(value = {@Result(property = "user_id", column = "user_id"),
@Result(property = "user_name", column = "user_name"),
@Result(property = "user_age", column = "user_age"),
@Result(property = "sex", column = "user_sex"),
@Result(property = "user_bday", column = "user_bday"),})
public List<UserInfo> getAllUser();
//query return hashmap
@Select("select * from user_info where user_id=#{userId}")
public HashMap getUser2(@Param("userId")Integer userId);
//queryAll return hashmap
@Select("select * from user_info ")
public List<HashMap> getAllUser2();
}
- DBFactory.java
package com.abc.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class DBFactory {
public static SqlSessionFactory sqlSessionFactory = null;
static {
//create sqlsessionfactory from xml
InputStream resource = null;
try {
resource = Resources.getResourceAsStream("config\\mybatis-config.xml");
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("resource:"+resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resource);
System.out.println("sqlSessionFactory:"+sqlSessionFactory);
}
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
}
- mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- mysql-->
<environments default="mysql">
<!-- id="oracle"-->
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/abc"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="com/abc/mapper/userinfo.xml"/>-->
<mapper class="com.abc.mapper.UserInfoMapper"/>
</mappers>
</configuration>
- UserInfoTest.java
package test.com;
import com.abc.domain.UserInfo;
import com.abc.mapper.UserInfoMapper;
import com.abc.utils.DBFactory;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
public class UserInfoTest {
//use namespace
@Test
public void add1() {
SqlSession session = DBFactory.getSession();
UserInfo user = new UserInfo();
user.setUser_id(33);
user.setUser_name("bob30");
int i = session.insert("com.abc.mapper.UserInfoMapper.addUser", user);
session.commit();
if (i > 0) {
System.out.println("success");
}
session.close();
}
//user interface
@Test
public void add2() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
UserInfo user = new UserInfo();
user.setUser_id(37);
user.setUser_name("bob31");
user.setSex("m");
int i = mapper.addUser(user);
session.commit();
if (i > 0) {
System.out.println("success");
}
session.close();
}
//update
@Test
public void update() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
UserInfo user = new UserInfo();
user.setUser_id(33);
user.setUser_name("sam31");
int i = mapper.update(user);
session.commit();
if (i > 0) {
System.out.println("success");
}
session.close();
}
//delete
@Test
public void delete() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
int user_id = 33;
int i = mapper.delete(user_id);
session.commit();
if (i > 0) {
System.out.println("success");
}
session.close();
}
//getUser
@Test
public void getUser() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
int user_id = 37;
UserInfo user = mapper.getUser(user_id);
session.commit();
System.out.println(user.toString());
session.close();
}
//getAllUser
@Test
public void getAllUser() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
List<UserInfo> list = mapper.getAllUser();
session.commit();
for (UserInfo u : list) {
System.out.println(u);
}
session.close();
}
//getUser return hashmap
@Test
public void getUser2() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
int user_id = 37;
HashMap user = mapper.getUser2(user_id);
session.commit();
System.out.println(user.get("user_id"));
System.out.println(user.get("user_name"));
System.out.println(user.get("user_age"));
System.out.println(user.get("user_sex"));
System.out.println(user.get("user_bday"));
session.close();
}
//getAllUser Hashmap
@Test
public void getAllUser2() {
SqlSession session = DBFactory.getSession();
UserInfoMapper mapper = session.getMapper(UserInfoMapper.class);
List<HashMap> list = mapper.getAllUser2();
session.commit();
for (HashMap user : list) {
System.out.print(user.get("user_id"));
System.out.print(user.get("user_name"));
System.out.print(user.get("user_age"));
System.out.print(user.get("user_sex"));
System.out.print(user.get("user_bday"));
System.out.println();
}
session.close();
}
}
- log4j.properties
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [$t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connector=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
- Dynamic SQL (if, choose(when, otherwise), trim (where, set), foreach)
- mybatis05
- UserInfo.java
package com.abc.domain;
import java.util.Date;
public class UserInfo {
private Integer user_id;
private String user_name;
private Integer user_age;
private String sex;
private Date user_bday;
public UserInfo() {}
public UserInfo(Integer user_id, String user_name, Integer user_age, String sex, Date user_bday) {
this.user_id = user_id;
this.user_name = user_name;
this.user_age = user_age;
this.sex = sex;
this.user_bday = user_bday;
}
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public Integer getUser_age() {
return user_age;
}
public void setUser_age(Integer user_age) {
this.user_age = user_age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getUser_bday() {
return user_bday;
}
public void setUser_bday(Date user_bday) {
this.user_bday = user_bday;
}
@Override
public String toString() {
return "UserInfo{" +
"user_id=" + user_id +
", user_name='" + user_name + '\'' +
", user_age=" + user_age +
", sex='" + sex + '\'' +
", user_bday=" + user_bday +
'}';
}
}
- userinfo.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.abc.mapper.UserInfoMapper">
<resultMap type="userInfo" id="userMap">
<result column="user_id" property="user_id"/>
<result column="user_name" property="user_name"/>
<result column="user_age" property="user_age"/>
<result column="user_sex" property="sex"/>
<result column="user_bday" property="user_bday"/>
</resultMap>
<!---->
<select id="getAllUser" resultMap="userMap" parameterType="java.lang.String">
select * from user_info
<if test="username != null">
where user_name like #{username}
</if>
</select>
<!-- -->
<select id="getAllUser2" resultMap="userMap" parameterType="userInfo">
select * from user_info where 1=1
<if test="user_id != null">
and user_id=#{user_id}
</if>
<if test="user_name != null">
and user_name like #{user_name}
</if>
</select>
<!-- -->
<select id="getAllUser3" resultMap="userMap" parameterType="userInfo">
select * from user_info where 1=1
<choose>
<when test="user_id != null">
and user_id=#{user_id}
</when>
<when test="user_name != null">
and user_name like #{user_name}
</when>
<otherwise>
and user_sex='m'
</otherwise>
</choose>
</select>
<!-- -->
<select id="getAllUser4" resultMap="userMap" parameterType="userInfo">
select * from user_info
<where>
<if test="user_id != null">
and user_id=#{user_id}
</if>
<if test="user_name != null">
and user_name like #{user_name}
</if>
</where>
</select>
<!-- -->
<select id="getAllUser5" resultMap="userMap" parameterType="userInfo">
select * from user_info
<trim prefix="where" prefixOverrides="and | or">
<if test="user_id != null">
user_id=#{user_id}
</if>
<if test="user_name != null">
and user_name like #{user_name}
</if>
</trim>
</select>
<!-- -->
<update id="updateUser" parameterType="userInfo">
update user_info
<set>
<if test="user_name != null"> user_name = #{user_name},</if>
<if test="user_age != null">user_age = #{user_age},</if>
</set>
where user_id = #{user_id}
</update>
</mapper>
- UserInfoMapper.java
package com.abc.mapper;
import com.abc.domain.UserInfo;
import org.apache.ibatis.annotations.*;
import java.util.HashMap;
import java.util.List;
public interface UserInfoMapper {
//get all users conditional
public List<UserInfo> getAllUser(@Param("username") String username);
//
public List<UserInfo> getAllUser2(UserInfo user);
//
public List<UserInfo> getAllUser3(UserInfo user);
//
public List<UserInfo> getAllUser4(UserInfo user);
//
public List<UserInfo> getAllUser5(UserInfo user);
//
public int updateUser(UserInfo user);
}
- DBFactory.java
package com.abc.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class DBFactory {
public static SqlSessionFactory sqlSessionFactory = null;
static {
//create sqlsessionfactory from xml
InputStream resource = null;
try {
resource = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("resource:"+resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resource);
System.out.println("sqlSessionFactory:"+sqlSessionFactory);
}
public static SqlSession getSession() {
return sqlSessionFactory.openSession();
}
}
- QueryUserTest.java
package test.mybatis05;
import com.abc.domain.UserInfo;
import com.abc.mapper.UserInfoMapper;
import com.abc.utils.DBFactory;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class QueryUserTest {
//conditional query
@Test
public void query1(){
SqlSession session= DBFactory.getSession();
UserInfoMapper mapper=session.getMapper(UserInfoMapper.class);
List<UserInfo> list=mapper.getAllUser("bob");
// List<UserInfo> list=mapper.getAllUser(null);
for(UserInfo u: list){
System.out.println(u.toString());
}
}
//
@Test
public void query2(){
SqlSession session= DBFactory.getSession();
UserInfoMapper mapper=session.getMapper(UserInfoMapper.class);
UserInfo user=new UserInfo();
user.setUser_id(11);
user.setUser_name("bob");
List<UserInfo> list=mapper.getAllUser2(user);
// List<UserInfo> list=mapper.getAllUser2(null);
for(UserInfo u: list){
System.out.println(u.toString());
}
}
//
@Test
public void query3(){
SqlSession session= DBFactory.getSession();
UserInfoMapper mapper=session.getMapper(UserInfoMapper.class);
UserInfo user=new UserInfo();
user.setUser_id(11);
user.setUser_name("bob");
// List<UserInfo> list=mapper.getAllUser3(user);
List<UserInfo> list=mapper.getAllUser3(null);
for(UserInfo u: list){
System.out.println(u.toString());
}
}
//
@Test
public void query4(){
SqlSession session= DBFactory.getSession();
UserInfoMapper mapper=session.getMapper(UserInfoMapper.class);
UserInfo user=new UserInfo();
user.setUser_id(11);
user.setUser_name("bob");
List<UserInfo> list=mapper.getAllUser4(user);
// List<UserInfo> list=mapper.getAllUser4(null);
for(UserInfo u: list){
System.out.println(u.toString());
}
}
//
@Test
public void query5(){
SqlSession session= DBFactory.getSession();
UserInfoMapper mapper=session.getMapper(UserInfoMapper.class);
UserInfo user=new UserInfo();
user.setUser_id(11);
user.setUser_name("bob");
List<UserInfo> list=mapper.getAllUser5(user);
// List<UserInfo> list=mapper.getAllUser4(null);
for(UserInfo u: list){
System.out.println(u.toString());
}
}
//
@Test
public void update(){
SqlSession session= DBFactory.getSession();
UserInfoMapper mapper=session.getMapper(UserInfoMapper.class);
UserInfo user=new UserInfo();
user.setUser_id(11);
user.setUser_name("bob55");
user.setUser_age(55);
int ans=mapper.updateUser(user);
session.commit();
if(ans>0){
System.out.println("success");
}else{
System.out.println("fail");
}
session.close();
}
}
- log4j.properties
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [$t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connector=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
- mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- mysql-->
<typeAliases>
<typeAlias type="com.abc.domain.UserInfo" alias="userInfo"/>
</typeAliases>
<environments default="mysql">
<!-- id="oracle"-->
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/abc"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/abc/mapper/userinfo.xml"/>
</mappers>
</configuration>
-
SSM Spring SpringMVC Mybatis
-
ERROR: java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;
-
solve: mybatis-spring .jar switch to 1.3 or above
-
solve: mysql-connector switch to higher version
-
ERROR: java.lang.NoSuchMethodError: org.springframework.expression.spel.SpelParserConfiguration.(Lorg/springframework/expression/spel/SpelCompilerMode;Ljava/lang/ClassLoader;)V
-
solve:
-
change
-
to
-
update springframework to 5.3.6
-
ERROR: java.lang.AbstractMethodError: Method org/apache/commons/dbcp/DelegatingResultSet.isClosed()Z is abstract
-
solve: update Commons DBCP to latest version
-
ERROR: java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter
-
solve: under project structure
-
ERROR java.lang.ArrayIndexOutOfBoundsException: 57179 at org.springframework.asm.ClassReader.(Unknown Source)
-
solve: update spring xxx.jar from 3 to 4
-
ERROR org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘userInfoServiceImpl’: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.abc.mapper.UserInfoMapper’ available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup="", name="", description="", authenticationType=CONTAINER, type=java.lang.Object.class, mappedName="")}
-
solve: add: <import resource="classpath:applicationContext.xml " / > to springmvc-servlet.xml
-
delete: < context:component-scan base-package=“com.abc.service”>< /context:component-scan> from applicationContext.xml
-
ERROR: java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
; SQL []; Connection is read-only. Queries leading to data modification are not allowed; nested exception is java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed -
solve: change applicationContext.xml < tx:method name="*" read-only=“false”/>
-
IntelliJ IDEA Ctrl+Alt+T: Surround With
-
SSM
-
lib list
- TestController.java
package com.abc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
@RequestMapping("/test.do")
public String test(){
System.out.println(".!.!.");
return "index";
}
}
- UserInfoController.java
package com.abc.controller;
import com.abc.po.UserInfo;
import com.abc.service.UserInfoService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import java.util.List;
@Controller
@RequestMapping("/user")
public class UserInfoController {
//controllers
@Resource(name = "userInfoServiceImpl")
private UserInfoService service;
@RequestMapping("/list.do")
public String list(UserInfo user, Model model) {
List<UserInfo> list = service.getList(user);
model.addAttribute("list", list);
System.out.println("list.do"+user);
System.out.println(".!.!!!.");
return "userinfo/user_list";
}
@RequestMapping("/add.do")
public String add(UserInfo user, Model model) {
boolean mark = false;
try {
mark = service.addUser(user);
} catch (Exception e) {
e.printStackTrace();
}
if (mark) {
model.addAttribute("info", "success");
System.out.println("add.do"+user);
} else {
model.addAttribute("info", "fail");
}
System.out.println(".!.!!!.!.");
return "userinfo/user_info";
}
@RequestMapping("/loadUser.do")
public String loadUser(Integer userId, Model model) {
System.out.println("userId: " + userId);
try {
UserInfo user = service.getUser(userId);
model.addAttribute("user", user);
System.out.println("loadUser.do"+user);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(".!.!!!.!.!!!.");
return "userinfo/user_update";
}
@RequestMapping("/update.do")
public String update(UserInfo user, Model model) {
System.out.println("update.do"+user);
boolean mark = false;
try {
mark=service.userUpdate(user);
} catch (Exception e) {
e.printStackTrace();
}
if(mark){
model.addAttribute("info","success");
}else{
model.addAttribute("info","fail");
}
System.out.println(".!.!!!.!.!!!.!.");
return "userinfo/user_info";
}
@RequestMapping("/deleteUsers.do")
public String deleteUser(Integer[] userIds, Model model){
System.out.println("delete.do"+userIds.length);
boolean mark = false;
try {
mark=service.userDelete(userIds);
} catch (Exception e) {
e.printStackTrace();
}
if(mark){
model.addAttribute("info","success");
}else{
model.addAttribute("info","fail");
}
System.out.println(".!.!!!.!.!!!.!.");
return "userinfo/user_info";
}
}
- userinfo.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.abc.mapper.UserInfoMapper">
<resultMap id="userMap" type="UserInfo">
<result property="user_id" column="user_id"/>
<result property="user_name" column="user_name"/>
<result property="user_age" column="user_age"/>
<result property="sex" column="user_sex"/>
<result property="user_bday" column="user_bday"/>
</resultMap>
<!--add-->
<insert id="addUser" parameterType="userInfo">
insert into user_info (user_id,user_name, user_age, user_sex,user_bday)
values(#{user_id},#{user_name},#{user_age},#{sex},now())
</insert>
<!-- get list-->
<select id="getUserList" parameterType="userInfo" resultMap="userMap">
select * from user_info
<where>
<if test="user_id!=null and user_id!=''">
and user_id=#{user_id}
</if>
<if test="user_name!=null and user_name!=''">
and user_name like #{user_name}
</if>
</where>
order by user_id desc
</select>
<!-- get User-->
<select id="getUser" parameterType="java.lang.Integer" resultMap="userMap">
select * from user_info where user_id=#{userId}
</select>
<!-- update user-->
<update id="updateUser" parameterType="userInfo">
update user_info
<set>
<if test="user_name!=null">
user_name=#{user_name},
</if>
<if test="user_age!=null">
user_age=#{user_age},
</if>
<if test="sex!=null">
user_sex=#{sex},
</if>
<if test="user_bday!=null">
user_bday=#{user_bday},
</if>
</set>
where user_id=#{user_id}
</update>
<!-- delete user-->
<update id="deleteUser" parameterType="java.lang.Integer">
delete from user_info where user_id=#{user_id}
</update>
</mapper>
- UserInfoMapper.java
package com.abc.mapper;
import com.abc.po.UserInfo;
import java.util.List;
public interface UserInfoMapper {
//add
public int addUser(UserInfo user);
//get list
public List<UserInfo> getUserList(UserInfo user);
//get user
public UserInfo getUser(Integer userId);
//update user
public int updateUser(UserInfo user);
//delete
public int deleteUser(Integer userId);
}
- UserInfo.java
package com.abc.po;
import java.util.Date;
public class UserInfo {
private String delId;
private Integer user_id;
private String user_name;
private Integer user_age;
private String sex;
private Date user_bday;
public UserInfo() {}
public UserInfo(Integer user_id, String user_name, Integer user_age, String sex, Date user_bday) {
this.user_id = user_id;
this.user_name = user_name;
this.user_age = user_age;
this.sex = sex;
this.user_bday = user_bday;
}
public String getDelId() {
return "<input type='checkbox' name='userIds' value='"+this.getUser_id()+"'>";
}
public void setDelId(String delId) {
this.delId = delId;
}
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public Integer getUser_age() {
return user_age;
}
public void setUser_age(Integer user_age) {
this.user_age = user_age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getUser_bday() {
return user_bday;
}
public void setUser_bday(Date user_bday) {
this.user_bday = user_bday;
}
@Override
public String toString() {
return "UserInfo{" +
"user_id=" + user_id +
", user_name='" + user_name + '\'' +
", user_age=" + user_age +
", sex='" + sex + '\'' +
", user_bday=" + user_bday +
'}';
}
}
- UserInfoService.java
package com.abc.service;
import com.abc.po.UserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
public interface UserInfoService {
public boolean addUser(UserInfo user) throws Exception;
public List<UserInfo> getList(UserInfo user);
public UserInfo getUser(Integer userId) throws Exception;
public boolean userUpdate(UserInfo user);
public boolean userDelete(Integer[] userIds)throws Exception;
}
- UserInfoServiceImpl.java
package com.abc.service.impl;
import com.abc.mapper.UserInfoMapper;
import com.abc.po.UserInfo;
import com.abc.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
// bean name userInfoServiceImpl
@Service
public class UserInfoServiceImpl implements UserInfoService {
@Resource(name = "userInfoMapper")
private UserInfoMapper userInfoMapper;
@Override
public boolean addUser(UserInfo user) throws Exception {
System.out.println("UserInfoServiceImpl.addUser: service layer");
int c = userInfoMapper.addUser(user);
if (c > 0) {
return true;
}
return false;
}
@Override
public List<UserInfo> getList(UserInfo user) {
System.out.println("UserInfoServiceImpl.getList: service");
if (user != null) {
if (user.getUser_name() != null && !user.getUser_name().equals("")) {
user.setUser_name("%" + user.getUser_name() + "%");
}
}
return userInfoMapper.getUserList(user);
}
@Override
public UserInfo getUser(Integer userId) throws Exception {
System.out.println("UserInfoServiceImpl.getUser: service");
if (userId != null) {
return userInfoMapper.getUser(userId);
}
return null;
}
@Override
public boolean userUpdate(UserInfo user) {
System.out.println("UserInfoServiceImpl.updateUser: service layer");
if(user!=null) {
System.out.println("userUpdate"+user.toString());
int c = userInfoMapper.updateUser(user);
if (c > 0) {
return true;
}
}
return false;
}
@Override
public boolean userDelete(Integer[] userIds) throws Exception{
System.out.println("UserInfoServiceImpl.deleteUser: service layer");
if(userIds!=null && userIds.length>0) {
System.out.println("userDelete"+userIds.length);
for(int x: userIds) {
userInfoMapper.deleteUser(x);
}
return true;
}
return false;
}
}
- UserTest.java
package test.com.test;
import com.abc.po.UserInfo;
import com.abc.service.UserInfoService;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
public class UserTest {
@Test
public void addUser() throws Exception{
//add applicationContext.xml
ApplicationContext context= new ClassPathXmlApplicationContext("applicationContext.xml");
UserInfoService service=(UserInfoService)context.getBean("userInfoServiceImpl");
UserInfo u=new UserInfo();
u.setUser_id(59);
u.setUser_name("sam");
u.setUser_age(22);
u.setSex("private");
System.out.println("UserTest.addUser");
boolean mark=service.addUser(u);
if(mark){
System.out.println("success");
}else {
System.out.println("fail");
}
}
@Test
public void selectUser(){
ApplicationContext context= new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println(context);
UserInfoService service=(UserInfoService)context.getBean("userInfoServiceImpl");
List<UserInfo> list=service.getList(null);
for (UserInfo ui: list) {
System.out.println(ui.toString());
}
}
@Test
public void selectUser2() throws Exception {
ApplicationContext context= new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println(context);
UserInfoService service=(UserInfoService)context.getBean("userInfoServiceImpl");
UserInfo u=service.getUser(1);
System.out.println(u.toString());
}
@Test
public void updateUser() {
ApplicationContext context= new ClassPathXmlApplicationContext("applicationContext.xml");
System.out.println(context);
UserInfoService service=(UserInfoService)context.getBean("userInfoServiceImpl");
UserInfo u = new UserInfo();
u.setUser_id(1);
u.setUser_name("new");
System.out.println(u.toString());
boolean mark=service.userUpdate(u);
if(mark){
System.out.println("success");
}else {
System.out.println("fail");
}
}
}
- applicationContexst.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- context scan-->
<!-- <context:component-scan base-package="com.abc.service"></context:component-scan>-->
<!--datasource-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/abc"/>
<property name="username" value="root"/>
<property name="password" value="12345"/>
</bean>
<!-- sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--dataSource dataStream-->
<property name="dataSource" ref="dataSource"/>
<!-- configLocation use mybatis conf location-->
<property name="configLocation" value="classpath:mybatis.xml"/>
</bean>
<!-- basePackage mapper -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.abc.mapper"></property>
</bean>
<!-- transactionManager-->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- transactions-->
<tx:advice id="txAdvice">
<tx:attributes>
<!-- find and get are read only-->
<tx:method name="find*" read-only="true"/>
<tx:method name="get*" read-only="true"/>
<tx:method name="query*" read-only="true"/>
<tx:method name="add*" read-only="false" propagation="REQUIRED"/>
<tx:method name="update*" read-only="false" propagation="REQUIRED" />
<tx:method name="del*" read-only="false" propagation="REQUIRED"/>
<tx:method name="*" read-only="false"/>
</tx:attributes>
</tx:advice>
<!-- configuration type-->
<!-- pointcut, execution() common pointcut fields, first * is return type
com.abc.service.*.*(..) includes all packages under com.abc.service-->
<aop:config>
<aop:pointcut id="myPointcut"
expression="execution(public * com.abc.service.impl.*.*(..))"/>
<!--execute at pointcut-->
<aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut"/>
</aop:config>
</beans>
- displaytag.properties
#basic.empty.showtable=false
basic.show.header=true
# page | list : jsp : display: page
sort.amount=page
export.amount=list
export.decorated=true
#paging.banner.group_size=8
#paging.banner.placement=top
css.tr.even=even
css.tr.odd=odd
css.th.sorted=sorted
css.th.ascending=order1
css.th.descending=order2
css.table=
css.th.sortable=sortable
# factory classes for extensions
factory.requestHelper=org.displaytag.util.DefaultRequestHelperFactory
# factory class for decorators
factory.decorator=org.displaytag.decorator.DefaultDecoratorFactory
# locale provider (Jstl provider by default)
locale.provider=org.displaytag.localization.I18nJstlAdapter
# locale.resolver (nothing by default, simply use locale from request)
#locale.resolver=
export.types=csv excel xml pdf
export.csv.class=org.displaytag.export.CsvView
export.excel.class=org.displaytag.export.ExcelView
export.xml.class=org.displaytag.export.XmlView
export.pdf.class=org.displaytag.export.PdfView
#export.***true for export method, false for no
export.csv=true
export.csv.label=<span class="export csv">CSV </span>
export.csv.include_header=false
export.csv.filename=
export.excel=true
export.excel.label=<span class="export excel">Excel </span>
export.excel.include_header=true
export.excel.filename=
export.xml=true
export.xml.label=<span class="export xml">XML </span>
export.xml.filename=
export.pdf=false
export.pdf.label=<span class="export pdf">PDF </span>
export.pdf.include_header=true
export.pdf.filename=
export.rtf=false
export.rtf.label=<span class="export rtf">RTF </span>
export.rtf.include_header=true
export.rtf.filename=
## messages
##
#basic.msg.empty_list=Nothing found to display.
#basic.msg.empty_list_row=<tr class="empty"><td colspan="{0}">Nothing found to display.</td></tr>
#error.msg.invalid_page=invalid page
#
#export.banner=<div class="exportlinks">Export options: {0}</div>
#export.banner.sepchar= |
#
#paging.banner.item_name=item
#paging.banner.items_name=items
#
#paging.banner.no_items_found=<span class="pagebanner">No {0} found.</span>
#paging.banner.one_item_found=<span class="pagebanner">One {0} found.</span>
#paging.banner.all_items_found=<span class="pagebanner">{0} {1} found, displaying all {2}.</span>
#paging.banner.some_items_found=<span class="pagebanner">{0} {1} found, displaying {2} to {3}.</span>
#
#paging.banner.full=<span class="pagelinks">[<a href="{1}">First</a>/<a href="{2}">Prev</a>] {0} [<a href="{3}">Next</a>/<a href="{4}">Last</a>]</span>
#paging.banner.first=<span class="pagelinks">[First/Prev] {0} [<a href="{3}">Next</a>/<a href="{4}">Last</a>]</span>
#paging.banner.last=<span class="pagelinks">[<a href="{1}">First</a>/<a href="{2}">Prev</a>] {0} [Next/Last]</span>
#paging.banner.onepage=<span class="pagelinks">{0}</span>
#
#paging.banner.page.selected=<strong>{0}</strong>
#paging.banner.page.link=<a href="{1}" title="Go to page {0}">{0}</a>
#paging.banner.page.separator=, \
# external sort and pagination
#pagination.sort.param=sort
#pagination.sortdirection.param=dir
#pagination.pagenumber.param=page
#pagination.searchid.param=searchid
#pagination.sort.asc.value=asc
#pagination.sort.desc.value=desc
#pagination.sort.skippagenumber=true
# unused
save.excel.banner=<a href="{0}" rel="external">save ({1} bytes)</a>
save.excel.filename=export.xls
- log4j.properties
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [$t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connector=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
- mybatis.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- mysql-->
<typeAliases>
<typeAlias type="com.abc.po.UserInfo" alias="userInfo"/>
</typeAliases>
<mappers>
<mapper resource="com/abc/mapper/userinfo.xml"/>
</mappers>
</configuration>
- user_add.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort() + path + "/";
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Title</title>
</head>
<body>
basepath: <%=basePath%> <br/>
<base href="<%=basePath%>"/>
<div align="center">
<form action="user/add.do" method="post">
<h1>Add User Info</h1>
id: <input type="text" name="user_id"/><br/>
name: <input type="text" name="user_name"/><br/>
sex: <input type="radio" name="sex" checked="checked" value="secret"/>secret
<input type="radio" name="sex" value="female"/>female
<input type="radio" name="sex" value="male"/>male<br/>
age: <input type="text" name="user_age"/><br/>
<input type="submit" value="add"/>
</form>
</div>
</form>
</body>
</html>
- user_info.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort() + path + "/";
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>"/>
<title>Title</title>
<script type="text/javascript">
alert('${info}');
window.location="<%=basePath%>user/list.do"
</script>
</head>
<body>
basepath: <%=basePath%> <br/>
</body>
</html>
- user_list.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort() + path + "/";
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="display" uri="http://displaytag.sf.net" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Title</title>
<script type="text/javascript">
function add() {
window.location = "<%=basePath%>userinfo/user_add.jsp";
}
function delUser() {
var userIds = document.getElementsByName("userIds");
var mark = false;
for (var i = 0; i < userIds.length; i++) {
if (userIds[i].checked) {
mark = true;
break;
}
}
if (mark && confirm("delete Users?")) {
var f1 = document.getElementById("f1");
f1.action = "<%=basePath%>user/deleteUsers.do";
f1.submit();
} else {
alert("select user");
}
}
</script>
<style type="text/css">
.tab {
width: 80%;
text-align: center;
background-color: greenyellow;
}
.tab tr th{
background-color: white;
}
.tab tr td{
background-color: white;
}
</style>
</head>
<body>
basepath: <%=basePath%> <br/>
<base href="<%=basePath%>"/>
<form action="user/list.do" method="post" id="f1" requestURI="user/list.do">
<div align="center">
<h1>User Info</h1>
id: <input type="text" name="user_id"/>
name: <input type="text" name="user_name"/>
<input type="submit" value="query"/>
<input type="button" value="add" onclick="add()"/>
<input type="button" value="delete" onclick="delUser()"/>
</div>
<%-- model.addAttribute("list", list);--%>
<display:table class="tab" name="list" export="true" sort="list" pagesize="5" requestURI="user/list.do">
<display:column property="delId" title="<input type=checkbox>"/>
<display:column property="user_id" title="USER_ID" sortable="true"/>
<display:column property="user_name" title="USER_NAME" />
<display:column property="user_age" title="USER_AGE"/>
<display:column property="sex" title="USER_SEX"/>
<display:column property="user_bday" title="USER_BDAY"/>
<display:column value="12345@abc.com" autolink="true" title="EMAIL"/>
<display:column value="http://www.bing.com" autolink="true" title="LINK"/>
<%-- public String loadUser(Integer userId, Model model) --%>
<display:column href="user/loadUser.do" paramId="userId" paramProperty="user_id" value="edit" title="EDIT"/>
</display:table>
<%-- replaced by taglib display--%>
<%--
<table bor der="1" align="center" width="80%">
<tr>
<th></th>
<th>id</th>
<th>name</th>
<th>age</th>
<th>sex</th>
<th>bday</th>
<th>edit</th>
</tr>
<c:forEach items="${list}" var="user">
<tr align="center">
<td><input type="checkbox" name="userIds" value="${user.user_id}"/></td>
<td>${user.user_id}</td>
<td>${user.user_name}</td>
<td>${user.user_age}</td>
<td>${user.sex}</td>
<td><fmt:formatDate value="${user.user_bday}"
pattern="yyyyMMdd"/></td>
<td><a href="user/loadUser.do?userId=${user.user_id}">edit</a></td>
</tr>
</c:forEach>
</table>--%>
</form>
</body>
</html>
- user_update.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort() + path + "/";
%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Title</title>
</head>
<body>
basepath: <%=basePath%> <br/>
<base href="<%=basePath%>"/>
<div align="center">
<form action="user/update.do" method="post">
<h1>Edit User Info</h1>
id: <input type="text" name="user_id" value="${user.user_id}"/><br/>
name: <input type="text" name="user_name" value="${user.user_name}"/><br/>
sex: <input type="radio" name="sex"
checked="checked" ${user.sex=='secret'?'checked':''} value="secret"/>secret
<input type="radio" name="sex" ${user.sex=='female'?'checked':''} value="female"/>female
<input type="radio" name="sex" ${user.sex=='male'?'checked':''} value="male"/>male<br/>
age: <input type="text" name="user_age" value="${user.user_age}"/><br/>
bday: <input type="text" name="user_bday" value="${user.user_bday}"/><br/>
<input type="submit" value="update"/>
</form>
</div>
</form>
</body>
</html>
- springmvc-servlet.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- scan -->
<context:component-scan base-package="com.abc"></context:component-scan>
<mvc:annotation-driven/>
<!-- annotation -->
<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
</bean>
<bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
</bean>
<!-- view -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
<import resource="classpath:applicationContext.xml"/>
</beans>
- web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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/web-app_4_0.xsd"
version="4.0">
<!-- spring core controller-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- filters-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
</web-app>
- index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<a href="test.do">test</a>
<a href="user/list.do">query user info</a>
</body>
</html>
-
Bootstrap
-
import
-
Webstorm: Ctrl+j enter : bs3-
-
boot1
-
test1.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test 1</title>
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="well">
<h1 class="page-header">Page Header</h1>
</div>
</body>
</html>
- test2.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test 2-grid</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-xs-4" style="border:10px solid #009;">
first div
</div>
<div class="col-xs-4" style="border:10px solid #009;">
second div
</div>
<div class="col-xs-4" style="border:10px solid #009;">
third div
</div>
</div>
<div class="row">
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
<div class="col-xs-1" style="border:2px solid #009;">
col-xs-1
</div>
</div>
<div class="row">
<div class="col-md-6" style="border:2px solid #F00;">col-mid-6</div>
<div class="col-md-6" style="border:2px solid #F00;">col-mid-6</div>
</div>
<div class="row">
<div class="col-md-4" style="border:2px solid #F00;">col-mid-4</div>
<div class="col-md-6" style="border:2px solid #F00;">col-mid-6</div>
</div>
<div class="row">
<div class="col-md-4" style="border:2px solid #F00;">col-mid-4</div>
</div>
<div class="row">
<div class="col-md-3" style="border:2px solid #F00;">col-mid-3</div>
<div class="col-md-3" style="border:2px solid #F00;">col-mid-3</div>
<div class="col-md-3" style="border:2px solid #F00;">col-mid-3</div>
<div class="col-md-3" style="border:2px solid #F00;">col-mid-3</div>
</div>
<div class="row">
<div class="col-md-3" style="border:2px solid #0F0;">col-mid-3</div>
<div class="col-md-3 col-md-offset-6" style="border:2px solid #0F0;">col-mid-3</div>
</div>
<div class="row">
<div class="col-xs-9" style="border:2px solid #F00;">
<div class="row">
<div class="col-xs-6" style="border:2px solid #0F0;">col-xs-6</div>
<div class="col-xs-6" style="border:2px solid #0F0;">col-xs-6</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-9 " style="border:2px solid #F00;">
<div class="col-md-1 col-md-push-1" style="border:2px solid #0F0;">col-mid-3
col-md-push-1
</div>
<div class="col-md-1 col-md-pull-1" style="border:2px solid #0F0;">col-mid-3
col-md-pull-1
</div>
</div>
</div>
</div>
</body>
</html>
- test3.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test 3-fonts</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<h1>HEADER1<small>SMALL HEADER</small></h1>
<h2>HEADER2<small>SMALL HEADER</small></h2>
<h3>HEADER3<small>SMALL HEADER</small></h3>
<h4>HEADER4<small>SMALL HEADER</small></h4>
<h5>HEADER5<small>SMALL HEADER</small></h5>
<h6>HEADER6<small>SMALL HEADER</small></h6>
<p><div class="lead">P LEAD</div> 14px font line height 10 px margin</p>
use <mark>mark for highlight</mark>
<p class="text-left">Left</p>
<p class="text-center">center</p>
<p class="text-right">right</p>
<p class="text-justify">justified text</p>
<p class="text-nowrap">noWrap</p>
<p class="text-lowercase">Lowercase</p>
<p class="text-uppercase">Uppercase</p>
<p class="text-capitalize">capitalize</p>
<abbr title="HyperTest Markup Language" class="initialism">HTML</abbr>
</body>
</html>
- test4.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test 4-table</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<h1>Striped Table</h1>
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>NAME</th>
<th>SEX</th>
<th>AGE</th>
<th>ADDRESS</th>
</tr>
</thead>
<tbody>
<tr>
<td>1001</td>
<td>Bob</td>
<td>male</td>
<td>44</td>
<td>Moon</td>
</tr>
<tr>
<td>1002</td>
<td>Sam</td>
<td>male</td>
<td>33</td>
<td>Mars</td>
</tr>
</tbody>
</table>
<h1>Bordered Hover Condensed Table</h1>
<table class="table table-bordered table-hover table-condensed">
<thead>
<tr>
<th>ID</th>
<th>NAME</th>
<th>SEX</th>
<th>AGE</th>
<th>ADDRESS</th>
</tr>
</thead>
<tbody>
<tr>
<td>1001</td>
<td>Bob</td>
<td>male</td>
<td>44</td>
<td>Moon</td>
</tr>
<tr>
<td>1002</td>
<td>Sam</td>
<td>male</td>
<td>33</td>
<td>Mars</td>
</tr>
</tbody>
</table>
<h1> Status Table</h1>
<table class="table table-bordered table-hover table-condensed">
<thead>
<tr class="active">
<th>ID</th>
<th>NAME</th>
<th>SEX</th>
<th>AGE</th>
<th>ADDRESS</th>
</tr>
</thead>
<tbody>
<tr class="success">
<td>1001</td>
<td>Bob</td>
<td>male</td>
<td>44</td>
<td>Moon</td>
</tr>
<tr class="warning">
<td>1002</td>
<td>Sam</td>
<td>male</td>
<td>33</td>
<td>Mars</td>
</tr>
<tr class="danger">
<td>1001</td>
<td>Bob</td>
<td>male</td>
<td>44</td>
<td>Moon</td>
</tr>
<tr class="info">
<td>1002</td>
<td>Sam</td>
<td>male</td>
<td>33</td>
<td>Mars</td>
</tr>
</tbody>
</table>
</body>
</html>
- Login
- alert.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>alert</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="alert alert-success" style="width: 50%">success</div>
<div class="alert alert-info" style="width: 50%">info</div>
<div class="alert alert-warning" style="width: 50%">warning</div>
<div class="alert alert-danger alert-dismissable" style="width: 50%">
<button type="button" class="close" data-dismiss="alert">
close
</button>
danger
</div>
<div class="alert alert-danger alert-dismissable" style="width: 50%">
<button type="button" class="close" data-dismiss="alert">
<span aria-hidden="true">×</span>
</button>
danger
<a href="#" class="alert-link">info</a>
</div>
</div>
</body>
</body>
</html>
- buttons.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Buttons</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<input type="button" class="btn btn-default" value="Button1">
<input type="button" class="btn btn-primary" value="Button1">
<input type="button" class="btn btn-success" value="Button1">
<input type="button" class="btn btn-info" value="Button1">
<input type="button" class="btn btn-warning" value="Button1">
<input type="button" class="btn btn-danger" value="Button1">
<input type="button" class="btn btn-link" value="Button1">
<br/>
<button class="btn btn-default" >Button2</button>
<br/>
Size<br/>
<input type="button" class="btn btn-default btn-lg" value="Button1">
<input type="button" class="btn btn-primary btn-sm" value="Button1">
<input type="button" class="btn btn-success btn-xs" value="Button1">
<br/>
Disabled
<br/>
<input type="button" class="btn btn-default " disabled value="Button1">
<input type="button" class="btn btn-default" value="Button1">
<hr/>
href<br/>
<a class="btn btn-primary disabled">Add</a>
<a class="btn btn-success">Edit</a>
<a class="btn btn-info">Delete</a>
<a class="btn btn-danger">Query</a>
<hr/>
Image <br/>
<img src="../img/sun.jpg" width="66" height="33" class="img-rounded">
<img src="../img/sun.jpg" width="132" height="66" class="img-rounded">
<img src="../img/sun.jpg" width="132" height="66" class="img-circle">
<img src="../img/sun.jpg" width="132" height="66" class="img-thumbnail">
<img src="../img/sun.jpg" class="img-thumbnail">
</body>
</html>
- form.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Form</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<hr/>
<input type="text" name="" class="form-control" placeholder="Please Enter">
<hr/>
<div class="form-group has-success has-feedback">
<label class="control-label">name:</label>
<input type="text" name="" class="form-control input-lg" placeholder="Please Enter">
<span class="glyphicon glyphicon-ok form-control-feedback"></span>
</div>
<div class="form-group has-success has-error">
<label class="control-label">name:</label>
<input type="text" name="" class="form-control input-sm " placeholder="Please Enter">
<span class="glyphicon glyphicon-ok form-control-feedback"></span>
</div>
<hr/>
<h3>Text</h3>
<textarea class="form-control" rows="5"></textarea>
<h3>Checkbox</h3>
Multi-select: <br/>
<div class="checkbox">
<label>
<input type="checkbox" value=""/>
Watch Movies
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" value=""/>
Read Books
</label>
</div>
<div class="checkbox">
<label>
<input type="checkbox" value=""/>
Play Games
</label>
</div>
Single-select:<br/>
<div class="radio-inline">
<label>
<input type="radio" name="sex" value="secret"/>Secret
</label>
</div>
<div class="radio-inline">
<label>
<input type="radio" name="sex" value="female"/>Female
</label>
</div>
<div class="radio-inline">
<label>
<input type="radio" name="sex" value="male"/>Male
</label>
</div>
Dropdown Menu:
<select class="form-control">
<option>Select</option>
<option>Analyst</option>
<option>Developer</option>
<option>Researcher</option>
</select>
</div>
</body>
</html>
- login1.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<h1 class="page-header">User Login</h1>
<form role="form">
<div class="form-group">
<label for="userId">User Id:</label>
<input type="text" class="form-control" placeholder="Enter Account No"
id="userId" name="userId"/>
</div>
<div class="form-group">
<label for="password">User Password:</label>
<input type="text" class="form-control" placeholder="Enter Password"
id="password" name="password"/>
</div>
<div class="checkbox">
<label>
<input type="checkbox"/>Remember Password
</label>
<br/>
<input type="submit" value="Login" class="btn"/>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
- login2.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h1 class="page-header">User Login</h1>
<form class="form-inline" role="form">
<div class="form-group">
<div class="input-group">
<div class="input-group-addon">@</div>
<input type="text" class="form-control" placeholder="Enter Account No"
id="userId" name="userId"/>
</div>
</div>
<div class="form-group">
<label for="password" class="sr-only">User Password:</label>
<input type="text" class="form-control" placeholder="Enter Password"
id="password" name="password"/>
</div>
<div class="checkbox">
<label>
<input type="checkbox"/> Remember Password
</label>
<input type="submit" value="Login" class="btn"/>
</div>
</form>
</div>
</body>
</html>
- login3.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-4">
<h2>User Login</h2>
<form class="form-horizontal" role="form">
<div class="form-group has-success">
<label class="col-md-4 control-label" for="userId">User
Id:</label>
<div class="col-md-6">
<input type="text" class="form-control" placeholder="Enter User Id"
id="userId" name="userId"/>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label" for="password">Password:</label>
<div class="col-md-6">
<input type="text" class="form-control" placeholder="Enter Password"
id="password" name="password"/>
</div>
</div>
<div class="form-group ">
<div class="col-md-offset-1">
<input type="submit" value="Login" class="btn"/>
<input type="reset" value="Reset" class="btn"/>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
- navigate1.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>nagivate</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<ul class="nav nav-tabs">
<li class="active"><a href="#home" data-toggle="tab">Home</a></li>
<li><a href="#about" data-toggle="tab">About</a></li>
<li><a href="#products" data-toggle="tab">Products</a></li>
<li><a href="#message" data-toggle="tab">Message</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="home">
Home Home Home Home
</div>
<div class="tab-pane active" id="about">
About About About About
</div>
<div class="tab-pane active" id="products">
Products Products Products Products
</div>
<div class="tab-pane active" id="message">
Message Message Message Message
</div>
</div>
</div>
</body>
</html>
- navigate2.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>nagivate</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand">Brand</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="#">Company Info</a></li>
<li><a href="#">Company News</a></li>
<li><a href="#">Message</a></li>
</ul>
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Company Info</a></li>
<li><a href="#">Company News</a></li>
<li><a href="#">Message</a></li>
</ul>
</div>
</div>
</nav>
</div>
</body>
</html>
- navigate3.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>nagivate</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<nav class="navbar navbar-default navbar-fixed-top">
<!--<nav class="navbar navbar-default navbar-static-top">-->
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Brand</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="#">Company Info</a></li>
<li><a href="#">Company News</a></li>
</ul>
<form class="navbar-form navbar-left" role="search">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Message</a></li>
</ul>
</div>
</div>
</nav>
<img src="../img/sun.jpg">
<img src="../img/sun.jpg">
<img src="../img/sun.jpg">
<img src="../img/sun.jpg">
<img src="../img/sun.jpg">
<img src="../img/sun.jpg">
<img src="../img/sun.jpg">
<img src="../img/sun.jpg">
<img src="../img/sun.jpg">
<img src="../img/sun.jpg">
<img src="../img/sun.jpg">
</div>
</body>
</html>
- panel.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Panel</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<hr/>
<div class="row">
<div class="col-md-2">
<div class="panel panel-default">
<div class="panel-heading">
heading
</div>
<div class="panel-body">
body
</div>
</div>
</div>
<div class="col-md-2">
<div class="panel panel-primary">
<div class="panel-heading">
heading
</div>
<div class="panel-body">
body
</div>
</div>
</div>
<div class="col-md-2">
<div class="panel panel-success">
<div class="panel-heading">
heading
</div>
<div class="panel-body">
body
</div>
</div>
</div>
<div class="col-md-2">
<div class="panel panel-info">
<div class="panel-heading">
heading
</div>
<div class="panel-body">
body
</div>
</div>
</div>
<div class="col-md-2">
<div class="panel panel-warning">
<div class="panel-heading">
heading
</div>
<div class="panel-body">
body
</div>
</div>
</div>
<div class="col-md-2">
<div class="panel panel-danger">
<div class="panel-heading">
heading
</div>
<div class="panel-body">
body
</div>
</div>
</div>
<div class="col-md-2">
<div class="panel panel-default">
<div class="panel-heading">
heading
<h1 class="panel-title">title</h1>
</div>
<div class="panel-body">
body
</div>
<div class="panel-footer">copyright</div>
</div>
</div>
</div>
</div>
<hr/>
<div class="container">
<div class="row">
<div class="col-md-6">
<div class="panel-info">
<div class="panel-heading">
User Info
</div>
<div class="panel-body">
<table class="table">
<tr>
<th>ID</th>
<th>NAME</th>
<th>SEX</th>
</tr>
<tr>
<th>001</th>
<th>Bob</th>
<th>M</th>
</tr>
<tr>
<th>001</th>
<th>Sam</th>
<th>M</th>
</tr>
</table>
</div>
</div>
</div>
<div class="col-md-6">
<div class="panel-info">
<div class="panel-heading">
User Info
</div>
<table class="table">
<tr>
<th>ID</th>
<th>NAME</th>
<th>SEX</th>
</tr>
<tr>
<th>001</th>
<th>Bob</th>
<th>M</th>
</tr>
<tr>
<th>001</th>
<th>Sam</th>
<th>M</th>
</tr>
</table>
</div>
</div>
</div>
</div>
</body>
</html>
- static.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link type="text/css" href="../css/bootstrap.css" rel="stylesheet">
<script src="../jquery-1.12.4.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-4">
<h2>User Login</h2>
<form class="form-horizontal" role="form">
<div class="form-group">
<label class="col-md-4 control-label" for="userId">User
Id:</label>
<div class="col-md-6">
<p class="form-control-static">admin12345</p>
</div>
</div>
<div class="form-group">
<label class="col-md-4 control-label" for="password">Password:</label>
<div class="col-md-6">
<p class="form-control-static">pword12345</p>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>