springmvc 简化Javaweb 简单应用
第一步 :
导入外部jar包,放在如图目录下
第二步:简单配置web.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>springmvc01</display-name> <!-- 配置Spring mvc前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 如何不配置初始化参数,会默认加载WEB-INF/前端控制器名-servlet.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- classpath代表应用程序根路径 -->
<param-value>classpath:app-mvc.xml</param-value>
</init-param>
<!-- 设置该servlet为web容器启动时立即加载 -->
<!-- 值正数时,正数值越小,优先级越高,为负数web容器启动时,默认不会立即初始化springmvc-->
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping> </web-app>
第三步:配置 spring 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"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
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-4.3.xsd"> <!-- 扫描控制器所在的包 -->
<context:component-scan base-package="com.zhidi.controller"/> <!-- 开启springmvc注解 -->
<mvc:annotation-driven/> <!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置返回视图的前缀 -->
<property name="prefix" value="/WEB-INF/page/"/>
<!-- 配置返回视图的后缀 -->
<property name="suffix" value=".jsp"/>
</bean> </beans>
第四步:servlet 服务层多个servlet服务器 现在可以简写到controller类中
浏览器进入网页会先进过控制层
package com.zhidi.controller; import java.util.Date; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; //会将该类交给Spring IOC容器管理
@Controller
public class HelloController { //URI
@RequestMapping("/helloworld")
public String hello() {
// /WEB-INF/page/success.jsp
return "success";
} @RequestMapping("/test")
public String test() {
return "success";
}
}
配置文件会根据方法返回字符窜自动拼接 如 success 会 进入 success.jsp 网页
表单传输数据简单操作:
建立实体类 属性名和表单 input name 名一样如下
package com.zhidi.entity; import java.util.Date; import org.springframework.format.annotation.DateTimeFormat; public class Student { private Integer id;
private String stuName;
private Integer age;
private String sex;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday; public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
} @Override
public String toString() {
return "Student [id=" + id + ", stuName=" + stuName + ", age=" + age + ", sex=" + sex + ", birthday=" + birthday
+ "]";
} } jsp 页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
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" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="user/edit.do" method="post">
学生编号:<input type="text" name="id"><br>
学生姓名:<input type="text" name="stuName"><br>
年龄:<input type="text" name="age"><br>
性别:<input type="radio" value="0" name="sex">男
<input type="radio" value="1" name="sex">女<br>
生日:<input type="date" name="birthday"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
controller类
package com.zhidi.controller; import java.util.Date; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.format.annotation.DateTimeFormat;
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.bind.annotation.RequestParam; import com.zhidi.entity.Student; @Controller
@RequestMapping("/user")
public class UserController { //在RequestMapping中设置属性值,可以匹配更精确的url
@RequestMapping(value="/add", method=RequestMethod.GET, params="username")
public String add(String username) {
System.out.println(username);
return "user_add";
} //向方法中添加默认类型的参数,HttpServletRequest,HttpServletResponse
@RequestMapping("/defaultParam1")
public String defaultParam(HttpServletRequest request, HttpServletResponse response) {
String userName = request.getParameter("username");
request.setAttribute("userName", userName);
HttpSession session = request.getSession();
return "user_add";
} @RequestMapping("/defaultParam2")
public String defaultParam(HttpSession session) {
session.setAttribute("userName", "小明");
return "user_add";
} @RequestMapping("/defaultParam3")
public String defaultParam(Model modelMap) {
//ModelMap是Model接口的实现类
//相当于向请求范围中设置了一个参数
modelMap.addAttribute("userName", "赵日天");
return "user_add";
} //如果请求中的参数名和方法形参中的参数名不一致,可以通过@RequestParam注解将指定名称的参数绑定到对象的形参上
//@RequestParam的required默认为true,必须传该参数,否则会出现400,可以将其设置为false,就代表请求参数列表中可以没有改参数,使用defaultValue可以为其添加默认值
@RequestMapping("/simpleParam1")
public String simpleParam(@RequestParam(value = "name", required = false, defaultValue = "赵特助") String username, Integer id) {
System.out.println(username);
System.out.println(id);
return "user_add";
} /**
* 跳转到user_edit页面
* @return
*/
@RequestMapping("/toEdit")
public String toEdit() {
return "user_edit";
} /**
* 处理表单提交
* 属性的自动装箱,会将表单提交的属性值设置到方法中的形参上
* @param stu
* @return
*/
@RequestMapping("/edit")
public String edit(Student stu) {
System.out.println(stu);
return "user_edit";
} /**
* springmvc中不能直接映射时间类型,需要通过其他方式去对时间进行转换,@DateTimeFormat注解,使用该注解时需要开启<mvc:annotation-driver/>
* @param date
* @return
*/
@RequestMapping("/testDate")
public String testdDate(@DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {
System.out.println(date);
return "user_edit";
}
}
springmvc 简化Javaweb 简单应用的更多相关文章
- javaWEB简单商城项目
javaWEB简单商城项目(一) 项目中使用到了上一篇博文的分页框架,还有mybatis,重点是学习mybatis.现在有些小迷茫,不知道该干啥,唉,不想那么多了,学就对了 一.项目功能结构 1.功能 ...
- springmvc(4)注解简单了解
对于我这样的新人来说,因为是刚开始做项目,所以以前的技术不是用的很多,就比如springmvc来说,实际上使用的都是注解形式的,对于那些全部都是配置的来说,虽然也了解一些,但是实际上还是没试用过的. ...
- javaweb简单登陆例子
JSP+Servlet+JavaBean简单程序例子——用户名密码登陆,摘自<Tomcat&JavaWeb 技术手册>,亲测可用. IDE环境:MyEclipse10 1.建立We ...
- SpringMvc和servlet简单对比介绍
原文链接:http://www.cnblogs.com/haolnu/p/7294533.html 一.servlet实现登录. 咱们先来看一下servlet实现注册登录. <servlet&g ...
- SpringMVC之一个简单的例子
一.一个简单的例子 二.web.xml文件配置 三.spring-mvc.xml文件(等同于struts2的struts文件) 四.login.jsp(登录页面) 五.登录成功的页面(success. ...
- [转]SpringMVC+Hibernate+Spring 简单的一个整合实例
原文地址:http://langgufu.iteye.com/blog/2088355 下面开始实例,这个实例的需求是对用户信息进行增删改查.首先创建一个web项目test_ssh,目录结构及需要的J ...
- springMVC 拦截器简单配置
在spring 3.0甚础上,起来越多的用到了注解,从前的拦截器在配置文件中需要这样配置 <beans...> ... <bean id="measurementInter ...
- SpringMVC基础——一个简单的例子
一.导入 jar 包 二.配置 web.xml 文件 <servlet> <servlet-name>dispatcherServlet</servlet-name> ...
- 【dynamic】简化反射简单尝试
最近在自己瞎整设计自己的数据访问层(纯属深入了解C#用),遇到了反射.网传反射性能很差,可是我们项目中也有功能用到了反射,总体来说还不错(小项目).由于居安思危的感觉越发沉重,不得不去打破传统,去寻求 ...
随机推荐
- jekyll 如何加密博客 防止抓取
经常会发现自己的博客被一些垃圾网站抓取,我就在博客进行加密,在访问的时候进行解密,于是爬虫如果不执行js就无法获得内容 本文告诉大家如何加密博客 加密使用把文章内容转换为 Html 之后转换为 bas ...
- Postman:非专业的并发测试
Postman是开发中常用的接口测试工具,也可以用来进行并发测试. 使用方法如下: 1. 直接输入url 选择GET方法,点击Send. 结果打印一个"test",如下: 2. 使 ...
- es6笔记 day3---Promise
作用:解决异步回调问题 先知道它的大概语法就好了,这个东西需要平时用到才知道它的用处 语法: let promise= new Promise(function(resolve,reject){ // ...
- vuejs 数据视图不更新
由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除 可以使用 Vue.set(object, key, value) 方法向嵌套对象添加响应式属性 数组 this.$set(ar ...
- Keras cnn 手写数字识别示例
#基于mnist数据集的手写数字识别 #构造了cnn网络拟合识别函数,前两层为卷积层,第三层为池化层,第四层为Flatten层,最后两层为全连接层 #基于Keras 2.1.1 Tensorflow ...
- markdown color
深青色 深蓝色 seagreen darkgreen indianred cornflowerblue lightskyblue coral lightcoral darkorange
- java中获取url传值时的int类型参数的方法
int parameterName=Integer.valueOf(request.getParameter("你所要获得的int类型的参数名"));
- 解析GMT+N时区,返回日期类型
涉及到正则表达式,时区转换. /** * * 按格式 yyyy-MM-dd HH:mm:ss 以指定GMT时区进行解析,返回对应的当前系统时区当地时间. * @param dateString 格式 ...
- 调用微软未公开ZwQueryInformationThread函数根据线程句柄获取线程ID
这段时间公司项目中为了支持XP系统同事代码中用到了 GetThreadId 这个微软的API 但是这个API最低支持版本是 Windows version Windows Vista [desktop ...
- 「2018-12-02模拟赛」T3 约束排列 解题报告
3.约束排列(place.pas/cpp/in/out) 问题描述: 给出 n 个互不相同的小写字母,表示出现的字符类型,以及 k 个约束关系: .....,表示 ai 必须出现在 bi 前面(ai, ...