最近在学Springmvc
因为开始学的时候是连接数据库的,实在没搞懂单独的SpringMVC怎么搭建
1,项目结构
2,项目代码
2.1web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 核心控制器 -->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
其中<param-value>**.xml</param-value>
如果不写,则使用默认值:/WEB-INF/<servlet-name>-servlet.xml
在本文中也就是说
/WEB-INF下创建spring-servlet.xml
spring-servlet.xml取代
applicationContext.xml,就不需要applicationContext.xml
2.2 applicationContext.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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:component-scan base-package="com" />
<!-- 启用springmvc注解处理器 -->
<mvc:annotation-driven />
<!-- 解决springmvc 不能访问静态资源 -->
<mvc:default-servlet-handler />
<!-- 配置视图解析器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
这里面就三个东西
<context:component-scan base-package="com" />
在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component @Controller@Service等这些注解的类,则把这些类注册为bean
2.3book.java
package com.entity;
public class Book {
private Integer id;
private String bookName;
private String author;
private Integer price;
public Book(String bookName, String author, Integer price) {
super();
this.bookName = bookName;
this.author = author;
this.price = price;
}
public Book() {
super();
}
public Book(Integer id, String bookName, String author, Integer price) {
super();
this.id = id;
this.bookName = bookName;
this.author = author;
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
}
2.4BookControl.java
package com.control;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.entity.Book;
@Controller
@RequestMapping("/book")
public class BookControl {
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(Book book) {
return "redirect:books";
}
@RequestMapping("/books")
public String show(ModelMap model) {
return "show";
}
}
2.5add.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'add.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="<%=path %>/css/style.css">
<script>
function check(){
var regx = /^\d+$/gi;
var price = document.all.price.value;
if(!regx.test(price)){
alert("请输入合理的数据");
return false;
}
return true;
}
</script>
</head>
<body>
<center>
<form action="<%=path%>/book/add" method="post" οnsubmit="return check();">
名称:
<input name="bookName" />
<br />
作者:
<input name="author" />
<br />
单价:
<input name="price" />
<br />
<Input type="submit" value="添加" />
<input type="reset" value="取消" />
</form>
</center>
</body>
</html>
最近才学现在也只是搞懂了其中的一个功能!
1,从add.jsp写入的数据被填充到BookControl.java中的add方法的参数book中!
2,add.jsp中表单中input元素的name属性是book.java中的成员属性
3,
BookControl.java的“别名”,@RequestMapping("/book")
4,add方法的“别名”,@RequestMapping(value = "/add", method = RequestMethod.POST)
5,因此form表单的 action="<%=path%>/book/add"
6,show
方法的“别名”,@RequestMapping("/books")
注意从add方法调到show方法:return "redirect:books";
show方法最后访问的是show.jsp 直接return “show”;
欢迎广大网友批评指正!