当前位置: 首页 > 编程日记 > 正文

SpringMVC学习二

使用POJO作为参数

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd"><display-name></display-name>    <!-- 配置org.springframework.web.filer.HiddenHttpMethodFilter:可以把POST请求转为DELETE或POST请求--><filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><filter-mapping><filter-name>HiddenHttpMethodFilter</filter-name><!-- 过滤所有请求 --><url-pattern>/*</url-pattern></filter-mapping><!-- 配置DispatcherServlet --><servlet><servlet-name>springDispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 配置 DispatcherServlet的一个初始化参数:配置SpringMvc 配置文件的位置和名称--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!-- 也可以不通过contextConfigLocation 来配置SpringMvc的配置文件,而使用默认的默认的配置文件为:/WEB-INF/<servlet-name>-servlet.xml/WEB-INF/springDispatcherServlet-servlet.xml--><!-- 设置启动 --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><!-- 请求处理 --><servlet-name>springDispatcherServlet</servlet-name><!-- /:应答所有请求 --><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

springmvc.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:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="
 http://www.springframework.org/schema/beans    
 http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
     http://www.springframework.org/schema/mvc      
 http://www.springframework.org/schema/tx/spring-mvc-4.0.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-4.0.xsd
 http://www.springframework.org/schema/aop
 http://www.springframework.org/schema/aop/spring-aop-4.0.xsd"><!-- 配置自定义扫描包 --><context:component-scan base-package="como.springmvc.handlers"></context:component-scan><!-- 配置视图解析器:如何把handler方法返回值解析为实际的物理视图 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/views/"></property><!-- 后缀 --><property name="suffix" value=".jsp"></property></bean></beans>

实体类代码:

User.java

package com.springmvc.entity;public class User {private String username;private String password;private String email;private int age;private Address address;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}@Overridepublic String toString() {return "User [username=" + username + ", password="+ password + ", email=" + email + ", age=" + age+ ", address=" + address + "]";}}

Address.java

package com.springmvc.entity;public class Address {private String province;private String city;public String getProvince() {return province;}public void setProvince(String province) {this.province = province;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}@Overridepublic String toString() {return "Address [province=" + province + ", city=" + city + "]";}}

Pojo.java

package como.springmvc.handlers;

import java.io.IOException;
import java.io.Writer;

import javax.servlet.http.*;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.springmvc.entity.User;

@Controller
@RequestMapping("/Pojo")
public class Pojo {
    
    /*
     * SpringMVC会按请求参数名和POJO属性名进行自动匹配
     * 自动为该对象填充属性,支持级联属性
     * 如:dept.deptId、dept.address.tel
    
     * */
            
    @RequestMapping("/testPojo")
            public String testPojo(User user){
                    System.out.println("testPojo"+user);
                
                return "success";
                
            }
    
    /*
     * 可以使用Servlet原生的API作为目标方法的参数,具体支持一下类型
     * HttpServletRequest
     * HttpServletResponse
     * HttpSession
     * java.security.Principal
     * Locale InputStream
     * OutputStream
     * Reader
     * Writer
    
     * */
    
    @RequestMapping("/testServletAPI")
            public void testServletAPI(HttpServletRequest request,
                    HttpServletResponse response,Writer out) throws IOException{
                        System.out.println("testServletAPI,"+request+","+response);
                        out.write("hello");
                //return "success";
                
            }
}

pojo.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 'pojo.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">
    
  </head>
 
  <body>
  <form action="Pojo/testPojo"  method="post"><br>
          username:<input type="text"  name="username" /><br>
          password:<input type="password"  name="password" /><br>
          email:<input type="text"  name="email" /><br>
          age:<input type="text"  name="age" /><br>
          <!-- 级联属性 :属性的属性 -->
          city:<input type="text"  name="address.city" /><br>
          province:<input type="text"  name="address.province" /><br>
          <input type="submit" value="Value" />
 
  </form>
    
    
    <a href="Pojo/testServletAPI">Test ServletAPI</a>
  </body>
</html>

success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"  isErrorPage="true"%>
<%
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 'success.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="styles.css">--></head><body>success page. <br></body>
</html>

转载于:https://www.cnblogs.com/liurg/p/8005782.html

相关文章:

使用CInternetSession和CHttpFile读取网页内容

参考网址&#xff1a;http://www.398588.com/Article/T9/78.aspx读取网页的内容可以类比本地的文件一下&#xff0c;代码如下&#xff1a;#include <afxinet.h> CString url; GetDlgItemText(IDC_EDIT1,url); CInternetSession Sess; CHttpFile*cFile (CHttp…

谢文睿:西瓜书 + 南瓜书 吃瓜系列 7. 支持向量机

Datawhale南瓜书是经典机器学习教材《机器学习》&#xff08;西瓜书&#xff09;的公式推导解析指南&#xff0c;旨在让在学习西瓜书的过程中&#xff0c;再也没有难推的公式&#xff0c;学好机器学习。 以往内容&#xff1a; 西瓜书公式推导讲解来了&#xff01;0. 导学1. 一…

Python培训分享:Python发展前景怎么样?

最近学习Python技术的同学越来越多&#xff0c;大家对于Python技术比较关注的两个点&#xff0c;就是Python技术好不好学&#xff0c;Python就业前景好不好&#xff0c;那么本文针对Python发展前景怎么样这个问题为大家做下详细的介绍。 Python培训分享&#xff1a;Python发展前…

处理器拦截器(HandlerInterceptor)详解

处理器拦截器&#xff08;HandlerInterceptor&#xff09;详解 编程界的小学生 关注 2017.04.06 15:19* 字数 881 阅读 657评论 0喜欢 4简介SpringWebMVC的处理器拦截器&#xff0c;类似于Servlet开发中的过滤器Filter&#xff0c;用于处理器进行预处理和后处理。 应用场景1、日…

Datawhale组队学习周报(第018周)

文章目录本周结营的开源内容即将结营的开源内容正在进行的开源内容七月排期的开源内容希望排期的开源内容每周号外Whalepaper 招新公告本周&#xff08;06月14日~06月20日&#xff09;&#xff0c;第 25 期组队学习一共有 3 门开源课程&#xff0c;共组建了 3 个学习群&#xf…

【原创】多台电脑如何公用一个键盘鼠标进行操作 - Mouse with Borders 软件

搞程序开发的同事经常会碰到类似的情况&#xff0c;桌子有多台设备&#xff0c;笔记本&#xff0c;台式机了&#xff0c;经常需要来回切换操作&#xff0c;桌子上摆满了键盘和鼠标&#xff0c;如果要是用同一个键盘或者鼠标&#xff0c;操作这些设备那就很便利了。 给大家推荐一…

Python培训教程分享:如何实现pygame的初始化和退出操作?

本期小编为大家介绍的Python培训教程是关于“如何实现pygame的初始化和退出操作?”的内容&#xff0c;pygame模块针对不同的开发需求提供了不同的子模块&#xff0c;例如显示模块、字体模块、混音器模块等&#xff0c;一些子模块在使用之前必须进行初始化&#xff0c;比如字体…

PLSQL的 dynamic sql小例子

开始 SET serveroutput ON;DECLAREp_tab_name varchar2(20);cursor_name INTEGER;p_rows_del INTEGER; BEGINp_tab_name : EMP_CPY;cursor_name : DBMS_SQL.OPEN_CURSOR;DBMS_SQL.PARSE(cursor_name, DELETE FROM ||p_tab_name, DBMS_SQL.NATIVE);DBMS_OUTPUT.PUT_LINE(p_tab_n…

【青少年编程】陈晓光:打靶游戏

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

Phpcms V9手机门户设置教程:怎么用PC V9做手机网站

一、在PHPcms V9管理后台设置手机门户 1.1、开启手机网站。位置&#xff1a;模块 》手机门户 》 添加手机站点&#xff0c;具体设置可参照截图&#xff1a; 填写站点名和LOGO文件相对位置&#xff0c;绑定用于手机网站的二级域名m.cmsyou.com&#xff0c;域名以http://开头。 1…

参加软件测试培训需要学习哪些知识

软件测试在互联网行业的发展前景非常好&#xff0c;很多人都想学习软件测试&#xff0c;其中有很多都是零基础学员&#xff0c;那么参加软件测试培训需要学习哪些知识?零基础是否能学会呢?来看看下面的详细介绍吧。 参加软件测试培训需要学习哪些知识?下面给大家简单说下软件…

C#用XmlDocument操作XML

1.加载xml文件 string xmlPath AppDomain.CurrentDomain.BaseDirectory"xml/test.xml"; XmlDocument xmlDoc new XmlDocument(); xmlDoc.Load(xmlPath);//这里是xml文件的路径 string xmlString"<books><book>test</book></books>…

【第20周复盘】转换思路,让更多的小朋友们参与进来!

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

篇三:XPath--解析Html

篇三&#xff1a;XPath--解析Html

Python培训教程:什么是Python全局解释器锁(GIL)?

本期Python培训教程小编为大家带来的是关于“什么是Python全局解释器锁(GIL)?”的问题&#xff0c;全局解释器锁是计算机程序设计语言解释器用于同步线程的工具&#xff0c;使得在同一进程内任何时刻仅有一个线程在执行&#xff0c;常见的有CPython、Ruby MRI。 Python培训教程…

Datawhale组队学习周报(第019周)

本周&#xff08;06月21日~06月27日&#xff09;&#xff0c;第 25 期组队学习一共有 3 门开源课程&#xff0c;共组建了 3 个学习群&#xff0c;参与的学习者有 292 人&#xff0c;其中 web开发入门教程、数据挖掘实战&#xff08;异常检测&#xff09; 已经结营&#xff0c;另…

git ingore添加忽略文件无较的解决方法

一、启动Git Bash并切换到项目目录下 二、执行下列语句&#xff1a; git rm -r --cached . git add . git commit -m update .gitignore 三、OK。

01、WPF 中 URI 解析

WebBrowser 控件导航到包中的 html 文件,首先把该文件 (bland.html) 的属性设置为 "Resource"、“始终复制”&#xff0c; 然后在 C# 页面可以导航到该文件。 webView.Navigate(new Uri(System.Environment.CurrentDirectory "/Assets/bland.html", UriK…

现在参加软件测试培训就业难度大不大?

软件测试对于IT行业来说&#xff0c;入门是相对比较简单的&#xff0c;所以学习起来是非常快的&#xff0c;零基础也可以在短时间内学会&#xff0c;那么现在参加软件测试培训就业难度大不大呢?看出来大家主要关心的是就业问题&#xff0c;来看看下面小编的详细介绍就知道了。…

ABP理论学习之数据传输对象(DTO)

本篇目录 为何需要DTO 领域层抽象数据隐藏序列化和懒加载问题DTO惯例和验证 DTO和实体的自动映射 使用特性和扩展方法进行映射帮助接口DTO用于应用层和 展现层间的数据传输。 展现层调用具有DTO参数的应用服务方法&#xff0c;然后应用服务使用领域对象来执行一些特定的业务逻辑…

Linux如何查看当前目录下文件的个数

查看当前目录下文件的个数 ls -l | grep "^-" | wc -l 查看当前目录下文件的个数&#xff0c;包括子目录里的。 ls -lR| grep "^-" | wc -l 查看某目录下文件夹&#xff08;目录&#xff09;的个数&#xff0c;包括子目录里的。 ls -lR| grep "^d&quo…

迟语寒:组队学习的那些事

很开心又拿到了优秀船员&#xff0c;其实这已不是我第一次参加组队学习了&#xff0c;4月份的二手车是我第一次接触到DataWhale&#xff0c;那次课程结束后&#xff0c;马老师找到我让我分享一下心得&#xff0c;但是我觉得第一次坚持下来不算什么&#xff0c;于是我答应他如果…

Python培训教程分享:Python模块如何导入__all__属性?

本期小编为大家带来的Python培训教程是关于“Python模块如何导入__all__属性?”的内容&#xff0c;后面在工作中是会遇到Python模块这个工作内容的&#xff0c;Python模块的开头通常会定义一个__all__属性&#xff0c;该属性实际上是一个元组&#xff0c;该元组中包含的元素决…

F#探险之旅(三):命令式编程(上)

F#系列随笔索引页面 在本系列的第二部分&#xff08;函数式编程上、中、下&#xff09;中&#xff0c;我们了解了如何使用F#进行纯粹的函数式编程。但是在一些情况下&#xff0c;比如I/O&#xff0c;几乎不能避免改变状态&#xff0c;也就是说会带来side effect。F#并不强求你以…

Spring注解@Component和@resource的使用

http://heavengate.blog.163.com/blog/static/20238105320127234165489/转载于:https://www.cnblogs.com/passer1991/archive/2012/12/05/2802718.html

【青少年编程】黄羽恒:平行空间

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

软件测试培训分享:软件测试岗位面试技巧有哪些?

在参加完软件测试培训后&#xff0c;我们最先要准备的就是Python的面试工作了&#xff0c;任何面试都是有技巧的&#xff0c;软件测试也不例外&#xff0c;那么下面小编就为大家详细的介绍一下软件测试岗位面试技巧有哪些?希望可以帮助到大家。 软件测试培训分享&#xff1a;软…

【青少年编程】黄羽恒:Python

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

如何把文件隐藏在一张图片里面

该技巧适合 Windows 2000 / XP / Vista 1&#xff1a;准备一张图片&#xff0c;比如 jian.jpg。准备目标文件&#xff0c;比如dan.txt。我们要实现把dan.txt隐藏在图片里面。 2&#xff1a;打开命令行提示符&#xff1a;点击“开始→运行”&#xff0c;输入“cmd”。 3&#xf…

企业级nosql数据库应用与实战-redis

企业级nosql数据库应用与实战-redis项目场景&#xff1a;随着互联网2.0时代的发展&#xff0c;越来越多的公司更加注重用户体验和互动&#xff0c;这些公司的平台上会出现越来越多方便用户操作和选择的新功能&#xff0c;如优惠券发放、抢红包、购物车、热点新闻、购物排行榜等…