html带参数网址跳转的是如何实现的

比如 访问网址A+参数(B网址) 跳转到B网址
这个是怎么实现的

7个回答

在A网址的页面中的js中加上以下代码:
$().ready(function(){
var urlA = window.location.href;
//通过字符串截取等方式获取url中的B网址
var urlB=urlA.substring(10,urlA.length);//根据实际url内容设置sustring里的两个参数,这里只是例子
window.location.href=urlB; //跳转到B网站
});

你这边说的是代参数跳转到其他页面还是通过参数来跳转到指定位置呢?

 window.location.href = '参数url'

你这边说的是代参数跳转到其他页面还是通过参数来跳转到指定位置呢? 同上

如果是get的话,可以直接在地址后面?加上参数

是指的路由吗?a#b=“1” ?

基本的思路是:
1.拿到当前的网址 A

2.接受参数的值

若网址A的长度基本不变,可以通过substring来获取后面的参数值 如1楼所讲
当然,也可以用比较系统一点的方法 写一个function来获取该页面的值 对于多个参数的情况下,可以很快捷的挑选出想要的参数

function getQueryStr(str) { 
        var rs = new RegExp("(^|)" + str + "=([^&]*)(&|$)", "gi").exec(LocString), tmp; 
        if (tmp = rs) { 
            return tmp[2]; 
        } 
        return ""; 
    } 
    var parm1 = getQueryStr("parm1");   
    var parm2 = getQueryStr("parm2"); 
    var parm3 = getQueryStr("parm3"); 

3.跳转到参数的的网址B

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
nginx 跳转时自动追加参数
比如 我访问 http://abc.com?bd?sbzc 在这个页面点击一个连接http://abc.com/goods-203614.html 能不让在nginx服务器配置上做配置 让浏览器显示的地址是 http://abc.com/goods-203614.html?bd?sbzc 也就是说 把访问首页时 浏览器后缀的?bd?sbzc 自己加到跳转后的页面上 请问各位 使用nginx能否实现 若能则如何做 谢谢!
【PHP】 一个关于PHP传参的问题,有大神可以帮我实现?
关于PHP传参的问题: 例:我想在当前阅读的 A页面 https://www.baidu.com/plugin.php?id=badu_love:badu_user&love_id=2 右下增加一个按钮 这个按钮的跳转地址为 同网站的另一个插件页面 即 B页面 如:https://www.baidu.com/plugin.php?id=ang&mobile=2 难点在 这个的要跳转的B页面的 ulr地址最后的的数值变量 ( 如上:2) 是根据 点击的当前A页面 ulr 地址最后的数值变量 (如上: 2 )来跳转的 也就是说 如果当前 A页面ulr 地址 最后数值是3 那么按钮跳转的B页面ulr 地址最后的数值也必须是3 以此类推 那么 这个 A页面的按钮 应该怎么写怎么实现(js+html) 最好能用js实现 因为更加不懂Jquery 个人妄加揣测的思路 :(但不知如何实现) 获取 网页ulr 地址 获取 &后的 参数 获取 id 的值 Value 输出 id 的值 调用id的值 将id的值赋值给一个自定义变量 在HTML 按钮的连接中 加入自定义变量 有大神可以帮我实现吗
AnglurJs中A标签跳转后返回,如何保持原来的参数!
有这么一个需求: 用IoNic做移动端前端的时候,需要放大和缩小图片,用了好几种办法都不行,由于这款app是嵌套在类似于微信的app使用的,你就把它当做是仿微信的小程序算了。只有一种办法能够实现放大和缩小功能,哪就是直接给出a标签或者直接打开一个新窗口,这样用户可以双指滑动放大和缩小。 现在问题是:当用户点击a标签的时候,进去新的窗口,虽然说新窗口把久窗口覆盖,但是用户按返回键的时候,当初的页面的参数不在了。显示的是一堆angluar表达式。这方法如果用jQuery来做的话,返回的时候带参数回来就行,但是angluarJs怎么做的? ``` <div class="row row-wrap"> <div class="col col-33" ng-repeat="attach in data.attaches" ng-switch on="attach.mime | limitTo:5"> <a ng-href="#/image/{{attach.id}}" ng-switch-when="image"><img class="image-tb" ng-src="../../action/comm/file/image-tb/{{attach.id}}"></img></a> <a ng-href="#/video/{{attach.id}}" ng-switch-when="video"><img class="image-tb" ng-src="../../images/play.png"></img></a> </div> </div> ``` ``` <script id="image.html" type="text/ng-template"> <ion-view> <ion-content> <img width="100%" height="100%" ng-src="../../action/comm/file/online/{{fileId}}"></img> </ion-content> </ion-view> </script> ``` ``` // 图片查看页面的控制器 .controller('ImageCtrl', function($scope, $stateParams, $state, dqDataLoader) { $scope.fileId = $stateParams.fileId; }) ```
如何从JavaScript跳转到struts的result中?
环境:jdk1.6、ssh2、ext-4.1.1a 代码片段: // 以Ajax方式提交表单 form.submit({ // 提交成功,第一个参数是Ext.form.Basic对象 // 第二个参数是Ext.action.Action对象 success : function(form, action) { Ext.Msg.alert('登录成功!', action.result.msg); window.location.href="customerLogon.action?result=success"; }, // 提交失败 failure : function(form, action) { Ext.Msg.alert('登录失败!', action.result.msg); } }); public void logon() throws Exception { boolean result = userService.find(user); Map<String, Object> result2 = new HashMap<String, Object>(); if (result) { result2.put("success", true); result2.put("msg", "恭喜你,登录成功!"); } else { result2.put("success", false); result2.put("msg", "对不起,您的用户名、密码不匹配!"); } // 准备输出服务器响应 response.setContentType("text/html;charset=utf-8"); PrintWriter out = response.getWriter(); // 将Map包装成JSONObject后输出 out.print(new JSONObject(result2)); } <package name="customer" extends="struts-default"> <action name="customerLogon" class="net.action.UserAction" method="logon"> <!-- 成功 --> <result name="success">/loginSuccess.jsp</result> <!-- 失败 --> <result name="error">/loginFail.jsp</result> </action> </package> 现在表单可以提交成功,输出下面这个,页面跳转失败: 严重: Developer Notification (set struts.devMode to false to disable this message): Unexpected Exception caught setting 'result' on 'class net.action.UserAction: Error setting expression 'result' with value ['success', ] 就是如何用window.location.href跳转到result中去?用其它方式也可以 ,就是不要直接跳转到jsp页面,我要用struts.xml来控制页面跳转。能不能直接在logon()中更改达到同样的效果?如何实现? 已经找到办法,可以实现,不过这样相当麻烦,性能有点低,只能用于小项目。 关键代码: public Map<String, String> test() throws Exception { ActionContext context = ActionContext.getContext(); ActionInvocation invocation = context.getActionInvocation(); ActionProxy proxy = invocation.getProxy(); ActionConfig config = proxy.getConfig(); Set<Map.Entry<String, ResultConfig>> entrySet = config.getResults() .entrySet(); Map<String, String> res = new HashMap<String, String>(); for (Map.Entry<String, ResultConfig> entry : entrySet) { Map map = entry.getValue().getParams(); Set<Map.Entry> paramSet = map.entrySet(); for (Map.Entry e : paramSet) { System.out.println(entry.getKey() + "=" + e.getValue()); res.put(entry.getKey(), (String) e.getValue()); } } return res; } 不过没有完全解决,输出的是: success=/loginSuccess.jsp error=/loginFail.jsp 理想中:Map<String,Map<String,String>> map,每个Map<String,String>应该用一个action中class字符串来区别,这样如何实现?麻烦大神帮我改上面代码。谢谢!
js获取到的URL地址怎么放到html的href 中
``` var gwid = getUrlId("gwid");---截取到的地址参数-- var html = "<script type='text/javascript' src='getgwsj.php?gwid="+gwid+"'><\/script>";--把参数加入到地址中--- ``` 现在我已经用js把地址修改成我想要的地址了,怎么才能把这个地址输入到html中,从而实现点击就能跳转 ``` <a src= "html" >点击此处,返回主界面</a> ```
关于 extjs 内页面跳转(重定向)的问题
[b]功能需求[/b]: 通过一个下拉框来选择主题模板,将选中的值(主题模板的类名)通过Action传到另一个jsp页面(重定向),在jsp页面里根据传入的类名new出新的主页, [b]问题[/b]: Firefox控制台显示请求发送成功,到达了请求的jsp页面,但实际页面并没跳转,任然在当前下拉框的页面,控制台显示的“load response”按钮不明白什么意思, 部分代码如下: Firefox控制台见图: ruling.common.HomepageChange = Ext.extend(Ext.form.ComboBox, { fieldLabel : '选择主页模板', editable : false, displayField : 'classname', valueField : 'pageclass', emptyText : '请选择主题', value : '默认', width : 80, mode : 'remote', readonly : true, triggerAction : 'all', store : new Ext.data.JsonStore({ // 填充的数据 autoLoad : true, url : contextPath + '/common/homepage/getBrowseData.html', fields : ['pageclass','classname'], totalProperty : 'totalCount', root : "root" }), selectOnFocus : true, initEvents : function() { this.on('collapse', function() { Ext.Ajax.request({ url: contextPath + '/common/homepage/gotoHome.html', params: { classname: this.getValue() } }); }); } }); <package name="homepage" extends="common" namespace="/common/homepage"> <action name="getBrowseData" class="homepageAction" method="browse"> <result>/page/browseData.jsp</result> <result name="input">/page/browseData.jsp</result> </action> <action name="gotoHome" class="homepageAction" method="gotoHome"> <result type="redirect">/page/login.jsp</result> <result type="redirect" name="input">/page/main.jsp</result> </action> </package> [b]问题补充:[/b] 也就是说 Ext.Ajax.request 只是 请求数据,而不能在这跳转,页面的跳转只能在回调函数中执行 比如这样 success : function(){ window.location.href = contextPath + '/common/homepage/gotoHome.html' }, failure : function(){} 吗 那我的参数 也是在回调函数中传递咯 我先试试 谢了 [b]问题补充:[/b] window.location.href = contextPath + '/common/homepage/gotoHome.html?pageclass='+this.getValue(); 这样是可以把值传过去,但是在目标jsp里,我要在js里拿到传入的参数,然后在new对象出来, 也就是除了传值到目标jsp后,还要把值给其中的js, 但是jsp运行在服务器端,而js是在客户端啊,这样能传过去吗 另一种方案就是 不传值,只跳转,把值放在session中,然后到目标页拿出来, 在js中能拿到session吗? [b]问题补充:[/b] 非常感谢 两位的提示, 基本实现了 请求发送给action 然后 <result type="redirect">/page/homepage.jsp?pageclass=${pageclass}</result> 这样就能把值传到 jsp 再想办法给js就ok了 :arrow: 谢谢
传参问题,传参问题,,传参问题!!!
前台呢,用的HTML,easyui-tab,tree。要实现这么个功能,查询其他用户所测试的测试项目,我都是的按钮显示的,如图![图片说明](https://img-ask.csdn.net/upload/201704/10/1491789016_827887.png) 按钮是这种写法, ![图片说明](https://img-ask.csdn.net/upload/201704/10/1491789204_476102.png)这个href是一个双击事件跳转到的页面,,就是在tab上加了一个,而不是真正意义的跳转。。![图片说明](https://img-ask.csdn.net/upload/201704/10/1491789258_948922.png) ![图片说明](https://img-ask.csdn.net/upload/201704/10/1491789125_128129.png) ![图片说明](https://img-ask.csdn.net/upload/201704/10/1491789105_913821.png) 跳转过去的页面默认查看当前用户的,我的带参数过去,才行,求帮忙
php 使用rewrite 实现伪静态化
我有一个页面 但是传递的参数不同 实现的功能也不同 具体的 url 如下 : ① hrzj.php?zscity_class_id=351&pf= ②hrzj.php?classid=302&pf= ③hrzj.php?zjlb=2&PB_page=2 想通过规则 达到如下效果 : ①hrzj_351_.html ②hrzj_305_.html ③hrzj_2_2.html 我写的 规则 分别是 ``` ① RewriteRule ^hrzj_([0-9]*)_([0-9]*).html$ hrzj.php?zscity_class_id=$1&pf=$2 ② RewriteRule ^hrzj_([0-9]*)_([0-9]*).html$ hrzj.php?classid=$1&pf=$2 ③ RewriteRule ^hrzj_([0-9]*)_([0-9]*).html$ hrzj.php?zjlb=$1&PB_page=$2 ``` 但是服务器 只认第一条有效 如果点击 2 和 3 的链接 也会按照1 的规则去显示 就会出现页面跳转混乱的问题 哪位大神能帮忙看看啊
如何根据Ajax根据条件检索并实现局部刷新
随便举了个例子。 ``` @model IEnumerable<Ajax.Models.nmb> @{ ViewBag.Title = "Index"; } <h2>Index</h2> <p> @Html.ActionLink("Create New", "Create") </p> <table class="table"> <tr> <th> @Html.DisplayNameFor(model => model.name) </th> <th> @Html.DisplayNameFor(model => model.age) </th> <th> @Html.DisplayNameFor(model => model.lesson) </th> <th></th> </tr> @foreach (var item in Model) { <tr> <td> @Html.DisplayFor(modelItem => item.name) </td> <td> @Html.DisplayFor(modelItem => item.age) </td> <td> @Html.DisplayFor(modelItem => item.lesson) </td> <td> @Html.ActionLink("Edit", "Edit", new { id=item.id }) | @Html.ActionLink("Details", "Details", new { id=item.id }) | @Html.ActionLink("Delete", "Delete", new { id=item.id }) </td> </tr> } </table> ``` ``` // GET: nmbs/Details/5 public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } nmb nmb = db.nmb.Find(id); if (nmb == null) { return HttpNotFound(); } return View(nmb); } ``` 这些代码都是MVC自动生成的,没什么好讲,我只是提供了一个模型。 当你点击Details的时候,他的原理是直接传递一个model的参数,然后跳转至一个新的页面。 现在我想实现的是,点击Details后,页面不进行跳转,而是进行局部刷新,将详情在该页面下方展示出来。 请最好能给出详情的代码和过程,我原来打算用Ajax.beginform来实现,但不知道哪个环节出了差错,老是出现各种奇怪的意外,希望能够得到坛友的帮助。
spring mvc+shiro+cas 实现cas client功能 跳转回来404
http://securitycenter.com:8080/gtsys/cas?ticket=ST-14-HEDhc1GVQt0UYdiZpi7R-cas 返回这个地址 404 ![图片说明](https://img-ask.csdn.net/upload/201510/09/1444404164_27274.png) ``` <?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:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd" > <!-- 定时器开关 开始 --> <task:annotation-driven /> <!-- 标注类型 的事务配置 如果使用注解事务。就放开 <tx:annotation-driven />--> <!-- 统一异常处理方式 --> <bean id="exceptionHandler" class="com.lanyuan.exception.MyExceptionHandler"/> <!-- 初始化数据 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" > <property name ="locations"> <list> <value>classpath:jdbc.properties</value> </list> </property> <property name="ignoreUnresolvablePlaceholders" value="true" /> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="driverClassName" value="${jdbc.driverClass}" /> </bean> <bean id="pagePlugin" class="com.lanyuan.plugin.PagePlugin"> <property name="properties"> <props> <prop key="dialect">mysql</prop> <prop key="pageSqlId">.*query.*</prop> </props> </property> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动匹配Mapper映射文件 --> <property name="mapperLocations" value="classpath:mappings/*-mapper.xml"/> <property name="typeAliasesPackage" value="com.lanyuan.entity"/> <property name="plugins"> <array> <ref bean="pagePlugin" /> </array> </property> </bean> <!-- 通过扫描的模式,扫描目录在com.lanyuan.mapper目录下,所有的mapper都继承SqlMapper接口的接口, 这样一个bean就可以了 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.lanyuan.mapper" /> </bean> <!-- 事务配置 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- <aop:config> <aop:pointcut expression="execution(public * com.lanyuan.controller.*(..))" id="pointcut" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" /> </aop:config> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="query*" propagation="REQUIRED" read-only="true" /> <tx:method name="find*" propagation="REQUIRED" read-only="true" /> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="modify*" propagation="REQUIRED" /> <tx:method name="logicDelById" propagation="REQUIRED" /> </tx:attributes> </tx:advice> --> <!-- <aop:aspectj-autoproxy proxy-target-class="true"/> <bean id="log4jHandlerAOP" class="com.lanyuan.logAop.LogAopAction"></bean> <aop:config proxy-target-class="true"> <aop:aspect id="logAspect" ref="log4jHandlerAOP"> <aop:pointcut id="logPointCut" expression="execution(* org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(..))" /> <aop:around method="logAll" pointcut-ref="logPointCut" /> </aop:aspect> </aop:config> --> <!-- 使用Spring组件扫描的方式来实现自动注入bean --> <context:component-scan base-package="com.lanyuan.task" /> <!-- 隐式地向 Spring 容器注册 --> <context:annotation-config /> </beans> spring-application.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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" 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/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd" > <tx:annotation-driven /> <context:component-scan base-package="com.lanyuan.controller" /> <context:component-scan base-package="com.lanyuan.logAop" /> <!-- 启动对@AspectJ注解的支持 --> <!--通知spring使用cglib而不是jdk的来生成代理方法 AOP可以拦截到Controller--> <aop:aspectj-autoproxy proxy-target-class="true"/> <!-- 注解支持 --> <context:annotation-config/> <!--避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJackson2HttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> <value>text/json;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> <!-- 采用SpringMVC自带的JSON转换工具,支持@ResponseBody注解 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJackson2HttpMessageConverter" /> <!-- JSON转换器 --> </list> </property> </bean> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> <mvc:annotation-driven> <!-- 处理responseBody 里面日期类型 --> <mvc:message-converters> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="com.fasterxml.jackson.databind.ObjectMapper"> <property name="dateFormat"> <bean class="java.text.SimpleDateFormat"> <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" /> </bean> </property> </bean> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默认编码 --> <property name="defaultEncoding" value="utf-8" /> <!-- 文件大小最大值 --> <property name="maxUploadSize" value="10485760000" /> <!-- 内存中的最大值 --> <property name="maxInMemorySize" value="40960" /> </bean> <import resource="spring-mvc-shiro.xml"/> </beans> spring-mvc.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:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd" > <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" > <property name ="locations"> <list> <value>classpath:jdbc.properties</value> </list> </property> <property name="ignoreUnresolvablePlaceholders" value="true" /> </bean> <bean id="credentialsMatcher" class="com.lanyuan.shiro.credentials.RetryLimitHashedCredentialsMatcher"> <!-- hashAlgorithmName必须的,没有默认值。可以有MD5或者SHA-1,如果对密码安全有更高要求可以用SHA-256或者更高。 这里使用MD5 storedCredentialsHexEncoded默认是true,此时用的是密码加密用的是Hex编码;false时用Base64编码 hashIterations迭代次数,默认值是1。 --> <constructor-arg ref="cacheManager" /> <property name="hashAlgorithmName" value="md5" /> <!--<property name="hashIterations" value="2" />--> <!--<property name="storedCredentialsHexEncoded" value="true" />--> </bean> <!-- 会话Cookie模板 --> <bean id="sessionIdCookie" class="org.apache.shiro.web.servlet.SimpleCookie"> <!-- sid如果改为JSESSIONID会导致重定向循环 --> <constructor-arg value="sid"/> <property name="httpOnly" value="true"/> <property name="maxAge" value="-1"/> </bean> <bean id="rememberMeCookie" class="org.apache.shiro.web.servlet.SimpleCookie"> <constructor-arg value="rememberMe"/> <property name="httpOnly" value="true"/> <property name="maxAge" value="2592000"/><!-- 30天 --> </bean> <!-- rememberMe管理器 --> <bean id="rememberMeManager" class="org.apache.shiro.web.mgt.CookieRememberMeManager"> <!-- rememberMe cookie加密的密钥 建议每个项目都不一样 默认AES算法 密钥长度(128 256 512 位)--> <property name="cipherKey" value="#{T(org.apache.shiro.codec.Base64).decode('4AvVhmFLUs0KTA3Kprsdag==')}"/> <property name="cookie" ref="rememberMeCookie"/> </bean> <bean id="casSubjectFactory" class="org.apache.shiro.cas.CasSubjectFactory"/> <!-- 凭证匹配器 --> <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> <property name="realm" ref="casRealm" /> <property name="sessionManager" ref="sessionManager"/> <!-- 使用下面配置的缓存管理器 --> <property name="cacheManager" ref="cacheManager" /> <property name="rememberMeManager" ref="rememberMeManager"/> <property name="subjectFactory" ref="casSubjectFactory"/> </bean> <!-- 相当于调用SecurityUtils.setSecurityManager(securityManager) --> <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="staticMethod" value="org.apache.shiro.SecurityUtils.setSecurityManager"/> <property name="arguments" ref="securityManager"/> </bean> <!--自定义Realm --> <!-- <bean id="myRealm" class="com.lanyuan.shiro.MyRealm"> <property name="credentialsMatcher" ref="credentialsMatcher" /> <property name="cachingEnabled" value="false" /> --> <!-- 如需要自定义缓存时间放开以下.修改 ehcache.xml--> <!--<property name="authenticationCachingEnabled" value="true"/>--> <!--<property name="authenticationCacheName" value="authenticationCache"/>--> <!--<property name="authorizationCachingEnabled" value="true"/>--> <!--<property name="authorizationCacheName" value="authorizationCache"/>--> <!-- </bean> --> <!-- <property name="userService" ref="userService"/> --> <bean id="casRealm" class="com.lanyuan.shiro.MyCasRealm"> <property name="cachingEnabled" value="true"/> <property name="authenticationCachingEnabled" value="true"/> <property name="authenticationCacheName" value="authenticationCache"/> <property name="authorizationCachingEnabled" value="true"/> <property name="authorizationCacheName" value="authorizationCache"/> <!--该地址为cas server地址 --> <property name="casServerUrlPrefix" value="${shiro.casServer.url}"/> <!-- 该地址为是当前应用 CAS 服务 URL,即用于接收并处理登录成功后的 Ticket 的, 必须和loginUrl中的service参数保持一致,否则服务器会判断service不匹配--> <property name="casService" value="${shiro.client.cas}"/> </bean> <bean id="sysUserFilter" class="com.lanyuan.shiro.filter.SysUserFilter"/> <bean id="kickoutSessionControlFilter" class="com.lanyuan.shiro.filter.KickoutSessionControlFilter"> <property name="cacheManager" ref="cacheManager"/> <property name="sessionManager" ref="sessionManager"/> <property name="kickoutAfter" value="false"/> <property name="maxSession" value="1"/> <property name="kickoutUrl" value="/login.shtml"/> </bean> <bean id="casFilter" class="org.apache.shiro.cas.CasFilter"> <!--配置验证错误时的失败页面(Ticket 校验不通过时展示的错误页面) --> <property name="failureUrl" value="${shiro.failureUrl}"/> </bean> <bean id="casLogoutFilter" class="io.github.howiefh.cas.session.CasLogoutFilter"> <property name="sessionManager" ref="sessionManager"/> </bean> <bean id="logoutFilter" class="org.apache.shiro.web.filter.authc.LogoutFilter"> <property name="redirectUrl" value="${shiro.logout.url}"/> </bean> <!-- 配置shiro的过滤器工厂类,id- shiroFilter要和我们在web.xml中配置的过滤器一致 --> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <!-- <property name="loginUrl" value="/login.shtml" /> <property name="successUrl" value="/index.shtml" /> --> <property name="loginUrl" value="${shiro.login.url}"/> <property name="successUrl" value="${shiro.login.success.url}"/> <property name="unauthorizedUrl" value="/denied.jsp" /> <!-- 自定义权限配置 --> <property name="filterChainDefinitionMap" ref="chainDefinitionSectionMetaSource" /> <property name="filters"> <util:map> <entry key="cas" value-ref="casFilter"/> <entry key="logout" value-ref="logoutFilter" /> <entry key="casLogout" value-ref="casLogoutFilter" /> <entry key="sysUser" value-ref="sysUserFilter"/> <entry key="kickout" value-ref="kickoutSessionControlFilter"/> </util:map> </property> </bean> <!--自定义filterChainDefinitionMap --> <bean id="chainDefinitionSectionMetaSource" class="com.lanyuan.shiro.ChainDefinitionSectionMetaSource"> <property name="filterChainDefinitions"> <value> /casFailure.jsp = anon /cas = casLogout,cas /logout = logout /favicon.ico = anon /admin_files/** = anon /fonts/** = anon /404/** = anon /error.jsp = anon /js/** = anon /layer-v1.9.2/** = anon /notebook/** = anon /login.shtml = anon /denied.jsp = anon /install.shtml = anon /lanyuan.shtml = anon /** = casLogout,user </value> </property> </bean> <bean id="sessionIdGenerator" class="org.apache.shiro.session.mgt.eis.JavaUuidSessionIdGenerator"/> <!-- 会话DAO --> <bean id="sessionDAO" class="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO"> <property name="activeSessionsCacheName" value="shiro-activeSessionCache"/> <property name="sessionIdGenerator" ref="sessionIdGenerator"/> </bean> <!-- 会话验证调度器 --> <!-- 全局的会话信息检测扫描信息间隔30分钟--> <bean id="sessionValidationScheduler" class="org.apache.shiro.session.mgt.quartz.QuartzSessionValidationScheduler"> <property name="sessionValidationInterval" value="1800000"/> <property name="sessionManager" ref="sessionManager"/> </bean> <!-- 会话管理器 --> <!-- 全局的会话信息设置成30分钟,sessionValidationSchedulerEnabled参数就是是否开启扫描 --> <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"> <property name="globalSessionTimeout" value="1800000"/> <property name="deleteInvalidSessions" value="true"/> <property name="sessionValidationSchedulerEnabled" value="true"/> <property name="sessionValidationScheduler" ref="sessionValidationScheduler"/> <property name="sessionDAO" ref="sessionDAO"/> <property name="sessionIdCookieEnabled" value="true"/> <property name="sessionIdCookie" ref="sessionIdCookie"/> </bean> <!--shiro缓存管理器 --> <bean id="cacheManager" class="com.lanyuan.shiro.spring.SpringCacheManagerWrapper" > <property name="cacheManager" ref="springCacheManager"/> </bean> <bean id="springCacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"> <property name="cacheManager" ref="ehcacheManager"/> </bean> <!--ehcache--> <bean id="ehcacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation" value="classpath:ehcache.xml"/> </bean> <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" /> </beans> spring-shiro.xml <web-app 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" version="3.0" metadata-complete="false"> <display-name>gtsys</display-name> <!-- 单点登出 --> <!-- <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-shiro.xml,classpath:spring-application.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class> </listener> <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <async-supported>true</async-supported> <init-param> <param-name>targetFilterLifecycle</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.shtml</url-pattern> </servlet-mapping> <filter> <filter-name>encoding</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>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> --> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.eot</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.ttf</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.xml</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.swf</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.zip</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.gif</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.woff</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>login.shtml</welcome-file> </welcome-file-list> </web-app> web.xml ## shiro shiro.session.timeout=1800000 shiro.session.validate.timespan=1800000 # cas\u767B\u5F55URL shiro.login.url=https://localhost:8443/cas-server/login?service=http://securitycenter.com:8080/gtsys/cas # cas logout shiro.logout.url=https://localhost:8443/cas-server/logout?service=http://securitycenter.com:8080/gtsys # cas\u767B\u5F55\u6210\u529F\u8DF3\u8F6CURL shiro.login.success.url=http://securitycenter.com:8080/gtsys/index.shtml # cas\u670D\u52A1\u5668URL shiro.casServer.url=https://localhost:8443/cas-server # \u5BA2\u6237\u7AEFCAS\u767B\u5F55URL shiro.client.cas=http://securitycenter.com:8080/gtsys/cas # \u5BA2\u6237\u7AEFCAS\u9A8C\u8BC1\u5931\u8D25\u8DF3\u8F6CURL shiro.failureUrl=/casFailure.jsp ## dataSource dataSource.driver=com.mysql.jdbc.Driver dataSource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8 dataSource.username=root dataSource.password=1234 properties文件 <?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true" monitoring="autodetect" dynamicConfig="true"> <diskStore path="java.io.tmpdir"/> <!-- <diskStore>==========当内存缓存中对象数量超过maxElementsInMemory时,将缓存对象写到磁盘缓存中(需对象实现序列化接口) * <diskStore path="">==用来配置磁盘缓存使用的物理路径,Ehcache磁盘缓存使用的文件后缀名是*.data和*.index * name=================缓存名称,cache的唯一标识(ehcache会把这个cache放到HashMap里) * maxElementsOnDisk====磁盘缓存中最多可以存放的元素数量,0表示无穷大 * maxElementsInMemory==内存缓存中最多可以存放的元素数量,若放入Cache中的元素超过这个数值,则有以下两种情况 * 1)若overflowToDisk=true,则会将Cache中多出的元素放入磁盘文件中 * 2)若overflowToDisk=false,则根据memoryStoreEvictionPolicy策略替换Cache中原有的元素 * eternal==============缓存中对象是否永久有效,即是否永驻内存,true时将忽略timeToIdleSeconds和timeToLiveSeconds * timeToIdleSeconds====缓存数据在失效前的允许闲置时间(单位:秒),仅当eternal=false时使用,默认值是0表示可闲置时间无穷大,此为可选属性 * 即访问这个cache中元素的最大间隔时间,若超过这个时间没有访问此Cache中的某个元素,那么此元素将被从Cache中清除 * timeToLiveSeconds====缓存数据在失效前的允许存活时间(单位:秒),仅当eternal=false时使用,默认值是0表示可存活时间无穷大 * 即Cache中的某元素从创建到清楚的生存时间,也就是说从创建开始计时,当超过这个时间时,此元素将从Cache中清除 * overflowToDisk=======内存不足时,是否启用磁盘缓存(即内存中对象数量达到maxElementsInMemory时,Ehcache会将对象写到磁盘中) * 会根据标签中path值查找对应的属性值,写入磁盘的文件会放在path文件夹下,文件的名称是cache的名称,后缀名是data * diskPersistent=======是否持久化磁盘缓存,当这个属性的值为true时,系统在初始化时会在磁盘中查找文件名为cache名称,后缀名为index的文件 * 这个文件中存放了已经持久化在磁盘中的cache的index,找到后会把cache加载到内存 * 要想把cache真正持久化到磁盘,写程序时注意执行net.sf.ehcache.Cache.put(Element element)后要调用flush()方法 * diskExpiryThreadIntervalSeconds==磁盘缓存的清理线程运行间隔,默认是120秒 * diskSpoolBufferSizeMB============设置DiskStore(磁盘缓存)的缓存区大小,默认是30MB * memoryStoreEvictionPolicy========内存存储与释放策略,即达到maxElementsInMemory限制时,Ehcache会根据指定策略清理内存 * 共有三种策略,分别为LRU(最近最少使用)、LFU(最常用的)、FIFO(先进先出) --> <!-- 注意,以下缓存是永久有效,是系统初始化数据到缓存中,如果不需要永久有效,请另写,或在 --> <cache name="cache" maxEntriesLocalHeap="10000" maxEntriesLocalDisk="1000" eternal="true" diskSpoolBufferSizeMB="20" timeToIdleSeconds="0" timeToLiveSeconds="0" memoryStoreEvictionPolicy="LFU" transactionalMode="off"> </cache> <!-- 登录记录缓存 锁定10分钟 --> <cache name="passwordRetryCache" maxEntriesLocalHeap="2000" eternal="false" timeToIdleSeconds="600" timeToLiveSeconds="0" overflowToDisk="false" statistics="true"> </cache> <!-- <cache name="authorizationCache" maxEntriesLocalHeap="2000" eternal="false" timeToIdleSeconds="3600" timeToLiveSeconds="0" overflowToDisk="false" statistics="true"> </cache> <cache name="authenticationCache" maxEntriesLocalHeap="2000" eternal="false" timeToIdleSeconds="3600" timeToLiveSeconds="0" overflowToDisk="false" statistics="true"> </cache> --> <cache name="shiro-activeSessionCache" maxEntriesLocalHeap="2000" eternal="false" timeToIdleSeconds="3600" timeToLiveSeconds="0" overflowToDisk="false" statistics="true"> </cache> <cache name="shiro-kickout-session" maxEntriesLocalHeap="2000" eternal="false" timeToIdleSeconds="3600" timeToLiveSeconds="0" overflowToDisk="false" statistics="true"> </cache> </ehcache> ehcache.xml package com.lanyuan.shiro; //import com.github.zhangkaitao.shiro.chapter15.service.UserService; import java.util.List; import javax.inject.Inject; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.authz.SimpleAuthorizationInfo; import org.apache.shiro.cas.CasRealm; import org.apache.shiro.subject.PrincipalCollection; import com.lanyuan.entity.ResFormMap; import com.lanyuan.mapper.ResourcesMapper; import com.lanyuan.mapper.UserMapper; /** * <p>User: Zhang Kaitao * <p>Date: 14-2-13 * <p>Version: 1.0 */ public class MyCasRealm extends CasRealm { // private UserService userService; // // public void setUserService(UserService userService) { // this.userService = userService; // } @Inject private ResourcesMapper resourcesMapper; @Inject private UserMapper userMapper; @Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { String username = (String)principals.getPrimaryPrincipal(); // PathMatchingFilterChainResolver SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); //authorizationInfo.setRoles(userService.findRoles(username)); // authorizationInfo.setStringPermissions(userService.findPermissions(username)); String userId = SecurityUtils.getSubject().getSession().getAttribute("userSessionId").toString(); List<ResFormMap> rs = resourcesMapper.findUserResourcess(userId); for (ResFormMap resources : rs) { authorizationInfo.addStringPermission(resources.get("resKey").toString()); } return authorizationInfo; } } MyCasRealm.java ``` ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.springframework.org/schema/util" xmlns:aop="http://www.springframework.org/schema/aop" 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/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <aop:config proxy-target-class="true"></aop:config> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager"/> </bean> </beans> spring-mvc-shiro.xml ``` 这个是更改 网上的蓝缘系统的 cas server 和cas client参考的 http://howiefh.github.io/2015/05/19/shiro-cas-single-sign-on/?utm_source=tuicool 不知道为什么会返回404
easyui页面显示,就是在主页面显示另一个页面,那个页面没有完整的显示出来,但是在地址栏上输入那个页面的地址,那个页面就完整的显示,这怎么农
使用easyui做的main.jsp和busCarsManager.jsp 在main.jsp点击车辆管理即busCarsManager.jsp,显示成了这样 如下图 ![图片说明](https://img-ask.csdn.net/upload/202003/04/1583329850_48245.png) 在地址栏输入该页面url地址 ![图片说明](https://img-ask.csdn.net/upload/202003/04/1583329898_132483.png) 怎么弄好?? 以下是main.jsp代码 <title>Basic Form - jQuery EasyUI Demo</title> <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css"> <link rel="stylesheet" type="text/css" href="easyui/themes/demo.css"> <script type="text/javascript" src="easyui/jquery.min.js"></script> <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script> <script type="text/javascript"> $(function() { $('#tt').tree({ //点击菜单事件 onClick: function(node){ //如果选项的url为空,null,直接退出,在页面不变 if(node.url==""||node.url==null){ return; } //如果选项卡存在 var flag=$('#tab').tabs('exists',node.text); //存在的条件下,选中,显示其内容 if(flag){ $('#tab').tabs('select',node.text); }else{ $('#tab').tabs('add',{ title: node.text, href:node.url, closable:true }); } } }); }); </script> <title>汽车租赁系统</title> </head> <body class="easyui-layout"> <div data-options="region:'north',split:true" style="height:100px;background: url('images/绿色.jpg')"> <div style="margin-left: 120px;margin-top: 30px;float:left;"> <span style="font-size: 32px;color:orange;font-weight:bold;">汽车租赁系统</span> </div> <div style="float: right ;margin-top: 60px;margin-right: 30px"> <span style="font-size: 18px;color: red;">欢迎admin用户登录</span> <a style="font-size: 18px;color: red;text-decoration: none">注销</a> </div> </div> <div data-options="region:'south',title:'版权信息',split:true" style="height:200px;background: url('images/版权信息.png'); background-repeat: no-repeat;background-color: silver;background-position: center;"></div> <div data-options="region:'east',title:'East',split:true" style="width:200px;"> <div id="date" class="easyui-calendar" style="width:180px;height:200px;"></div> </div> <div data-options="region:'west',title:'West',split:true" style="width:150px;"> <div id="menu" class="easyui-accordion" data-options="fit:true,border:false"> <div title="类别一"> <ul id="tt" class="easyui-tree" url="SysMenusController/findMoreMenus"></ul> </div> <div title="类别二"></div> <div title="类别三"></div> </div> </div> <div data-options="region:'center'" style="background:#eee;"> <div id="tab" class="easyui-tabs" data-options="fit:true"> <div title="默认页"> <img src="images/默认页.jpeg" width="90%" height="90%"> </div> </div> </div> </body> 以下是busCarsManager.jsp代码 <body data-options="fit:true"> <table id="busCarsManger_dg" title="My Cars" class="easyui-datagrid" style="width:600px;height:250px" url="/busCarsController/findAllBusCars" toolbar="#busCarsManger_toolbar" pagination="true" rownumbers="true" fitColumns="true" singleSelect="true"> <thead> <tr> <th field="carnumber" width="50">汽车牌号</th> <th field="lastname" width="50">汽车类型</th> <th field="pice" width="50">汽车价格</th> <th field="description" width="50">汽车描述</th> <th data-options="field:'carimg',formatter:showImage" width="50">汽车图片</th> </tr> </thead> </table> <div id="busCarsManger_toolbar"> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newCars()">新增汽车</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onclick="editCars()">修改汽车信息</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="destroyCars()">移除</a> </div> <div id="busCarsManger_dlg" class="easyui-dialog" style="width:500px" data-options="closed:true,modal:true,border:'thin',buttons:'#busCarsManger_dlg-buttons'"> <form id="busCarsManger_fm" method="post" novalidate style="margin:0;padding:20px 50px"> <h3>汽车信息</h3> <div style="margin-bottom:10px"> <input name="carnumber" class="easyui-textbox" required="true" label="汽车牌号:" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="cartype" class="easyui-textbox" required="true" label="汽车类型:" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="color" class="easyui-textbox" required="true" label="汽车颜色" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="price" class="easyui-textbox" required="true" label="汽车价格" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="rentprice" class="easyui-textbox" required="true" label="汽车租金" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="deposit" class="easyui-textbox" required="true" label="汽车押金" style="width:100%"> </div> <div style="margin-bottom:10px"> <input name="description" class="easyui-textbox" required="true" label="汽车描述" style="width:100%"> </div> <input type="text" name="carimg" id="carimg"> </form> <form id="fm2" method="post" enctype="multipart/form-data" style="margin:0;padding:20px 50px"> <div style="margin-bottom:10px"> <input name="fil" class="easyui-filebox" label="汽车图片" style="width:70%"> <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="fileUpload()" style="width:100px">上传图片</a> </div> <span id="sp1"></span> </form> </div> <div id="busCarsManger_dlg-buttons"> <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="saveCars()" style="width:90px">Save</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg').dialog('close')" style="width:90px">Cancel</a> </div> <script type="text/javascript"> //全局参数地址 var url; //删除车辆系信息操作 function destroyCars(){ //当表格信息被选中 var row= $('#busCarsManger_dg').datagrid('getSelected'); if(row){ //提示是否删除 $.messager.confirm("提示","是否删除该车辆信息",function(flag){ if(flag){ //发送Ajax请求,通过控制器执行删除车辆操作 $.post("busCarsController/removeBusCars",{'carnumber':row.carnumber},function(result){ if(result>0){ //删除成功重新加载表格数据 $("#busCarsManger_dg").datagrid("reload"); }else{ $.messager.alert("警告","删除失败","error"); } }) } }) }else //提示请选中至少一行 $.messager.alert("提示","请选中当前信息表的一行数据","info"); } //修改车辆信息 function editCars(){ //当数据表格被选中 var row= $('#busCarsManger_dg').datagrid('getSelected'); if(row){ //执行修改操作,打开修改对话框 $("#busCarsManger_dlg").dialog("open").dialog("center").dialog("setTitle","修改汽车信息") //加载当前选中信息行的数据,在表单一中回显 $("busCarsManger_fm").form("load",row); //表单二中图片的回显,不是用append方法,是因为每次点击修改就会加一个图片,故只用文本显示方法html $("#sp1").html("<img src='images/"+result.url+"'width='80px'/>") //点击保存时,实现修改操作,跳转到当前车辆信息表 url:"busCarsController/changeBusCars"; }else{ $.messager.alert("提示","请选中当前信息表的一行数据","info"); } } //文件上传的操作 function fileUpload(){ //提交form表单 $('#fm2').form('submit',{ url: "busCarsController/fileUpload", success: function(result){ var result=eval('('+result+')'); if(result.url){ //防止在执行修改车辆信息操作,上传图片时,需要清空表单二的图片,防止出现两个图片 $("#sp1").empty(); //显示图片 $("#sp1").append("<img src='images/"+result.url+"'width='80px'/>") //将图片名字赋值给隐藏域 $("#carimg").val("result.url"); }else{ $.messager.alert("提示","图片上传失败","error"); } } }); } //保存车辆信息 function saveCars(){ //获得表单的所有内容 var val =$("busCarsManger_fm").serialize(); $.post(url,val,function(result){ if(result>0){ //关闭当前的对话框 $("#busCarsManger_dlg").dialog("close") //刷新后面的表格 $("#busCarsManger_dg").datagrid("reload"); } }) } 添加车辆信息 function newCars(){ //添加新增对话框信息 $("#busCarsManger_dlg").dialog("open").dialog("center").dialog("setTitle","新增汽车") //清除表单之前的内容 $("busCarsManger_fm").form("clear") //清除图片表单项,要不然下次打开还在 $("#fm2").form("clear") //清除图片显示 $("#sp1").empty(); url="busCarsController/saveBusCars"; } function showImage(val){ return "<img src='images/"+val+"' width='80px'/>"; } </script> </body>
spring mvc 动态返回问题
请求一下大家的一个问题. 在spring mvc中想动态返回以及渲染,现在是移动互联网时代.单纯做pc已经不行了. 一个需求: 统一URL根据不同的请求媒体类型返回不同的结果视图,由服务器渲染好,怎么渲染自己实现. 比如url . /user/findAllUsers 手机客户端要求能返回json或者xml或者更多 pc ajax客户端 要求全部支持 (json/xml/html) 手机浏览器端: 要求返回json或者xml 例子: 一般情况下手机客户端: /user/findAllUsers?media-type=json 返回: json data 一般情况下的手机浏览器客户端都是ajax.一般处理要求json /user/findAllUsers?media-type=json 返回: json data pc ajax客户端一般情况都是json和html /user/findAllUsers?media-type=html 返回可嵌入的一个用户列表视图 id , name , ... 1 , 名称 pc 静态网页客户端一般情况都是返回静态html /user/findAllUsers?media-type=html 返回一个用户列表视图 id , name , ... 1 , 名称 我尝试过使用一个参数来实现. if(mediaType==JSON){ 返回json渲染的视图 }else if(.....){ ....} 这样做很笨,很生硬的编码,另外我也尝试过使用spring mvc的configureContentNegotiation 配置,不行. 还有人说过全部返回json.你觉得这样可靠吗?跟本无法解决对爬虫的或者更多视图问题.还有你想下现在一般手机端或者ipad下的网页端都是跳转到另外的 那样开发量大了.后台一般要配合.还有什么的.
下面这道题怎么用asp.net里的控件来实现?
<div class="lady-on"> <div class="you-women"> <a href="single.html"><img class="img-responsive pic-in" src="images/pi4.jpg" alt=" " ></a> <span>产品1</span> </div> <div class="you-women"> <a href="single.html"><img class="img-responsive pic-in" src="images/pi4.jpg" alt=" " ></a> <span>产品2</span> </div> <div class="you-women"> <a href="single.html"><img class="img-responsive pic-in" src="images/pi4.jpg" alt=" " ></a> <span>产品3</span> </div> <div class="you-women"> <a href="single.html"><img class="img-responsive pic-in" src="images/pi4.jpg" alt=" " ></a> <span>产品4</span> </div> <div class="you-women"> <a href="single.html"><img class="img-responsive pic-in" src="images/pi4.jpg" alt=" " ></a <span>产品5</span> </div> </div> Product表,有PID、Name两列,点击链接,传递名字为id,值为PID的参数,跳转到ProductsDetails.aspx页面,图片显示使用DispalyImage一般处理程序,通过传递名字为id,值为PID的参数读取图片。
关于获取返回JSON数据提取的问题
假如别人访问了我的网站aaa.com/?id=123然后网站自动获取地址栏的ID值 , 提交给bbb.com/?id=123并取得返回的JSON。 问题:我如何在aaa.com/?id=123里用js获取url的id,并把ID提交获取返回json里参数URL值,提取出来后(没有出现数据就等待出现数据)然后让aaa.com/?id=123实现跳转,JSON 返回格式如下: {"resultcode": 200, "reason": "success", "data": {"url": "http://baidu.com", "base64": ""}, "error_code": 0} 本人比较水,希望能帮我写全一点。
简单的注册页面,调用短信接口显示页面问题。
各位大神,我是菜鸟,我想做一个简单的注册页面。填写手机号码验证码提交注册的。有对应的短信接口,请问在网页上,要怎么实现出来。 一、参数说明 重要参数参数如下: cpid=6ffe8808d4424a13b5061de47fbecb13 telephone 必须 手机号码 smsContent回复信息 如234512 cpparam A65开头的透传参数 请求用http get,返回用json 二、操作步骤 1.上传号码 2.上传第一条短信 3.上传第二条短信 例图: ![图片说明](https://img-bbs.csdn.net/upload/201903/02/1551537364_8804.jpg) 第一步:上传手机号码 http://47.107.71.132:9500/lsapi/channel/reportPhone?cpid=6ffe8808d4424a13b5061de47fbecb13&telephone=手机号码&cpparam=A65*开头的透传参数 成功返回 { “code”:”00”, “respMsg”:”成功” }(code=00标识成功,其他表示错误) 第二步:上报验证码(下面两个接口分别上1次码,2次码): 1.一次码 http://47.107.71.132:9500/lsapi/channel/reportVerifyCode1?cpid=6ffe8808d4424a13b5061de47fbecb13&telephone=手机号码&smsContent= A65*开头的透传参数(注意和上面的cpparam一致) 成功返回 { “code”:”00”, “respMsg”:””, } 提交验证码成功时跳转到二次验证码页面,输入错误时提示! 例图: ![图片说明](https://img-bbs.csdn.net/upload/201903/02/1551538154_396066.jpg) 2.二次验证码 http://47.107.71.132:9500/lsapi/channel/reportVerifyCode2?cpid=6ffe8808d4424a13b5061de47fbecb13&telephone=手机号码&smsContent=123456 成功返回 { “code”:”00”, “respMsg”:””, } 提交二次验证码成功时跳转到指定的网址链接,输入错误时提示! 怎么实现在网页上啊。。
response.sendRedirect()跳转页面无法显示
出现一个新问题:center_left.jsp,内容是Ext的一个form表单, 1 url:'servlet/AddQueServlet', 具体如下: 001 <script type="text/javascript"> 002 Ext.require([ '*' ]); 003 Ext.onReady(function() {//onReady()函数在页面注册多个函数,依次执行 004 Ext.QuickTips.init(); 005 Ext.state.Manager.setProvider(Ext.create('Ext.state.CookieProvider')); 006 // NOTE: This is an example showing simple state management. During development, 007 // it is generally best to disable state management as dynamically-generated ids 008 // can change across page loads, leading to unpredictable results. The developer 009 // should ensure that stable state ids are set for stateful components in real apps. 010 Ext.state.Manager.setProvider(Ext 011 .create('Ext.state.CookieProvider')); 012 013 //表单组合控件在中间部分的左侧 014 var form = new Ext.form.FormPanel({ 015 labelAlign : 'right', 016 autoScroll : true, 017 labelWidth : 50, 018 width : 600, 019 // title: 'form', 020 frame : true, 021 url:'servlet/AddQueServlet', 022 items : [ { 023 layout : 'form', 024 items : [ { 025 //columnWidth:.7, 026 xtype : 'fieldset', 027 layout : 'form', 028 checkboxToggle : true,//折叠fieldset 029 title : '文字输入', 030 autoHeight : true, 031 defaults : { 032 width : 400 033 }, 034 defaultType : 'textfield', 035 items : [ { 036 fieldLabel : '题目', 037 name : 'head', 038 allowBlank : false 039 }, { 040 041 xtype : 'htmleditor', 042 fieldLabel : '题目备注及说明', 043 id : 'editor', 044 anchor : '98%', 045 name : 'des', 046 fontFamilies: ["宋体", "隶书", "黑体","Times New Roman"] 047 048 }, { 049 xtype : 'hidden', 050 name : 'hidden' 051 } ] 052 }, { 053 //columnWidth:.3, 054 055 xtype : 'fieldset', 056 checkboxToggle : true, 057 title : '数据验证', 058 autoHeight : true, 059 defaultType : 'checkbox', 060 hideLabels : true, 061 layout : 'column', 062 name:'checkValue', 063 //style: 'margin-left:10px;', 064 //bodyStyle: 'margin-left:20px;', 065 items : [ { 066 boxLabel : '必填', 067 columnWidth : .125, 068 name : 'check', 069 inputValue : '1', 070 checked : true, 071 width : 'auto' 072 }, { 073 boxLabel : '手机号码', 074 columnWidth : .125, 075 name : 'check', 076 inputValue : '2', 077 //checked: true, 078 width : 'auto' 079 }, { 080 boxLabel : '邮编', 081 columnWidth : .125, 082 name : 'check', 083 inputValue : '3', 084 width : 'auto' 085 }, { 086 boxLabel : '身份证号', 087 columnWidth : .125, 088 name : 'check', 089 inputValue : '4', 090 width : 'auto' 091 }, { 092 boxLabel : '日期', 093 columnWidth : .125, 094 name : 'check', 095 inputValue : '5', 096 width : 'auto' 097 }, { 098 boxLabel : 'Email', 099 columnWidth : .125, 100 name : 'check', 101 inputValue : '6', 102 width : 'auto' 103 }, { 104 boxLabel : '必答题', 105 columnWidth : .25, 106 name : 'check', 107 inputValue : '7', 108 width : 'auto' 109 } ] 110 }, { 111 xtype : 'fieldset', 112 checkboxToggle : true, 113 title : '选项(每行一个)', 114 autoHeight : true, 115 defaultType : 'textarea', 116 hideLabels : true, 117 layout:'form', 118 //style: 'margin-left:10px;', 119 //bodyStyle: 'margin-left:20px;', 120 items : [ { 121 xtype:'textfield', 122 fieldLabel : '输入选项个数', 123 name : 'number' 124 },{ 125 width : 400, 126 grow : true, 127 name : 'options', 128 //allowBlank : false, 129 emptyText : '输入选项', 130 maxLength : 10, 131 minLength : 2 132 } ] 133 }, { 134 xtype : 'fieldset', 135 //checkboxToggle:true, 136 title : '选项排列', 137 autoHeight : true, 138 defaultType : 'radio', 139 hideLabels : true, 140 layout : 'column', 141 //style: 'margin-left:10px;', 142 //bodyStyle: 'margin-left:20px;', 143 items : [ { 144 145 boxLabel : '横向', 146 name : 'rank', 147 inputValue : '1', 148 //checked: true, 149 width : 'auto' 150 }, { 151 152 boxLabel : '竖向', 153 name : 'rank', 154 inputValue : '2', 155 checked : true, 156 width : 'auto' 157 } ] 158 } ] 159 160 } ], buttons: [{ 161 text: '保存', 162 handler:function(){ 163 form.getForm().submit(); 164 } 165 },{ 166 text: '读取' 167 },{ 168 text: '取消' 169 }] 170 }); 171 var viewport = Ext.create('Ext.Viewport', 172 { 173 id : 'Center_left', 174 layout : 'fit', 175 autoScroll : true, 176 items : [form] 177 }); 178 form.render("form"); 179 }); 180 181 182 </script> AddQueServlet如下: 01 public class AddQueServlet extends HttpServlet { 02 public void doGet(HttpServletRequest request, HttpServletResponse response) 03 throws ServletException, IOException { 04 response.setContentType("text/html"); 05 doPost(request, response);// 调用doPost方法 06 } 07 08 public void doPost(HttpServletRequest request, HttpServletResponse response) 09 throws ServletException, IOException { 10 request.setCharacterEncoding("utf-8"); 11 response.setContentType("text/html;utf-8"); 12 response.setCharacterEncoding("utf-8"); 13 // 获得表单提交的参数 14 String head=request.getParameter("head"); 15 String des=request.getParameter("des"); 16 int number=0; 17 if(request.getParameter("number")!=""){ 18 number= Integer.parseInt(request.getParameter("number")); 19 } 20 21 //System.out.print(number+"###################"); 22 String body=request.getParameter("options"); 23 String checkValue[]= request.getParameterValues("check"); 24 int rank=Integer.parseInt(request.getParameter("rank")); 25 //System.out.print(rank+"###################"); 26 HttpSession session=request.getSession(); 27 28 29 //int qt_id = Integer.parseInt((String)session.getAttribute("qt_id"));// 获得所选问题类型的ID 30 //System.out.print(qt_id); 31 int qt_id =1; 32 QuestionType qType = new QuestionType(); 33 34 35 QuestionTypeDao questionType = new QuestionTypeDaoImpl(); 36 qType = questionType.findQueTypeById(qt_id); 37 Questions question = new Questions(); 38 39 question.setQ_head(head); 40 question.setQ_body(body); 41 question.setQ_type(qType); 42 question.setQ_number(number); 43 44 45 46 QuestionsDao questionsDao = new QuestionsDaoImpl(); 47 questionsDao.add(question);// 调用实现类的的添加方法 48 49 response.sendRedirect("../DesignQuestions/Center_right.jsp");// 重定向到显示全部的Servlet中 50 } 51 } view sourceprint? 1 问题就是:Center_right.jsp无法显示,在表单里点击保存后,页面不跳转,也不报错!大侠们,说说答案吧
MVC下$.post第一次提交依旧是get方式,第二次才是post,怎么回事
需求:在login页面输入userId和pwd,如果都输入,就跳转到Home页面,我最开始使用的是$.post方式 html代码: ``` <form id='form1'> ​<input type="text" name='userId'/> ​<input type="text" name='pwd'/> ​<input type="submit" value="login" id="btn"/> </form> ``` ==================================================================== Jquery代码: ``` $(function(){ ​$("#btn").click(function(){ ​ ​$.post( ​ ​ ​ ​'/Home/CheckLogin', ​ ​ ​ ​$("#form1").serialize(), ​ ​ ​ ​function(data) ​ ​ ​ ​{ ​ ​ ​ ​ ​windows.location.href=‘@url.Action("Index","Home")’; ​ ​ ​ ​} ​ ​ ​) ​}); }); ``` ==================================================================== 运行起来,输入了用户名和密码后,点击提交,能看到还是Get方式,浏览器的url上出现了?参数,第二次再提交,就可以跳转到home页面了,这是怎么回事呢? 我换了另一种提交方式 Ajax.beginForm()的方式,依旧是post,这回完全可以实现。但依旧比较困扰第一种方式,求高手解答!!! javaScript的外部文件依次是 ``` <jquery-1..7.1.min.js> <jquery.unobtrusive-ajax.js> ```
response.setHeader("refresh","5;url=success.jsp?idname="+id);传递中文参数问题
<p>小弟最近刚学jsp,有个问题一直闹不明白,翻了好久资料也没找到答案。这个题目的要求是输入中文,如果不含有这个中文的话就会跳转到welcome.jsp页面,并且五秒后自动跳转到success.jsp页面,目前只有一个闹不明白,就是welcome.jsp中的response.setHeader("refresh","5;url=success.jsp?send="+str);,传递到success.jsp页面时是乱码,求解。。。。</p> <p>具体源码如下:</p> <pre name="code" class="a.jsp">&lt;%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %&gt; &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt; &lt;title&gt;a&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;form action="b.jsp" method="get" name="form1"&gt; &lt;p&gt;请输入内容: &lt;input type="text" name="fname" /&gt;&lt;/p&gt; &lt;input type="submit" value="Submit" /&gt; &lt;/form&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p> </p> <pre name="code" class="b.jsp">&lt;%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*" errorPage="" %&gt; &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt; &lt;title&gt;b&lt;/title&gt; &lt;%!LinkedList listname=new LinkedList();%&gt; &lt;/head&gt; &lt;body&gt; &lt;% String str=request.getParameter("fname"); if(listname.contains(str)) { %&gt; &lt;jsp:forward page="fail.jsp"/&gt; &lt;% } else{ listname.add(str); %&gt; &lt;jsp:forward page="welcome.jsp"&gt; &lt;jsp:param name="good" value="&lt;%=str%&gt;"/&gt; &lt;/jsp:forward&gt; &lt;% } %&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p> </p> <pre name="code" class="welcome.jsp">&lt;%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" pageEncoding="gb2312" errorPage="" %&gt; &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt; &lt;title&gt;refresh&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;% String str=request.getParameter("good"); byte b[]=str.getBytes("iso-8859-1"); str=new String(b,"gb2312"); %&gt; &lt;p&gt;添加&lt;%=str%&gt;成功, 页面将五秒钟实现跳转。&lt;/p&gt; &lt;% response.setHeader("refresh","5;url=success.jsp?send="+str); %&gt; &lt;p&gt;否则点击&lt;a href="success.jsp?send=&lt;%=str%&gt;"&gt;此处跳转&lt;/a&gt;&lt;/p&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p> </p> <pre name="code" class="success.jsp">&lt;%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" pageEncoding="gb2312" errorPage="" %&gt; &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt; &lt;title&gt;success&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;%String str=request.getParameter("send"); byte b[]=str.getBytes("iso-8859-1"); str=new String(b,"gb2312"); %&gt; 创建成功 &lt;%=str%&gt; &lt;/body&gt; &lt;/html&gt;</pre> <p> </p>
如何实现js同一页面的值的传递,希望热心大佬帮助一下我,菜鸟实习生,没有c币。。。。。。。。
我现在在做一个退伍军人就业信息管理的模块,现在我要和另一模块退伍军人基本信息连接到一起,基本信息里面没有这个用户我就无法添加就业信息,现在我要做的是点击就业信息模块主界面点击添加信息按钮,跳转到如下界面![图片说明](https://img-ask.csdn.net/upload/201905/05/1557026572_514791.jpg), 我需要在搜索框输入用户名搜索姓名查询基本信息表内有无该用户,有该用户则会显示在下方,如图![图片说明](https://img-ask.csdn.net/upload/201905/05/1557026823_184457.jpg) 现在我所想要问的就是,我点击这一条用户信息的确定按钮,要在下方显示的就业信息添加表单里面显示所选的这条基本信息的用户名,如图![图片说明](https://img-ask.csdn.net/upload/201905/05/1557027065_102023.jpg) 我的问题就是不知道怎么传,上面的查询显示信息我是调用的基本信息的那个主页面查询所有的方法 ``` /** * 用户基本信息查询 */ public String infoList() throws Exception { try { if (pageSize == null) { pageSize = 10; } PageUtil pageUtil = new PageUtil(request); pageUtil.setPageSize(pageSize); // 获取分页的参数 totalCount = informationService.getTotalCount(); // 获取分页的参数 pageUtil.setRsCount(totalCount); pageSize = pageUtil.getPageSize(); int pageCount = pageUtil.getPageCount(); int currentPage = pageUtil.getCurrentPage(); // 产生分页的工具条 pageTool = pageUtil.createPageTool(PageUtil.Text); //从基础信息读取所有基础信息 infoList = informationService.getAll(currentPage, pageSize,name); System.out.println(infoList+"##############################################################"); } catch (RuntimeException e) { e.printStackTrace(); } return "infoList"; } ``` 然后项目用的是ssh框架,公司技术比较老,大佬莫笑,页面请求跳转 ``` @ParentPackage(value = "struts-default") @Namespace(value = "/") @Action(value = "employAction", results = { @Result(name = "list", location = "/admin/system/employ/employ_list.jsp"), @Result(name = "add", location = "/admin/system/employ/employ_add.jsp"), @Result(name = "edit", location = "/admin/system/employ/employ_edit.jsp"), @Result(name = "infoList",location = "/admin/system/employ/employ_add.jsp"), }) ``` 然后是action的全部,写的比较乱 ``` package com.gyes.employ.action; import java.io.PrintWriter; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.jfree.data.DataUtilities; import org.springframework.beans.factory.annotation.Autowired; import com.gyes.currency.util.BaseAction; import com.gyes.currency.util.DateUtil; import com.gyes.currency.util.GsonUtil; import com.gyes.currency.util.JsonUtil; import com.gyes.currency.util.MessageBean; import com.gyes.currency.util.PageUtil; import com.gyes.employ.bean.Employ; import com.gyes.employ.service.EmployService; import com.gyes.system.dept.bean.Dept; import com.gyes.system.dept.service.DeptService; import com.gyes.system.dictionary.bean.Dict; import com.gyes.system.dictionary.serivce.DictService; import com.gyes.system.information.action.InformationAction; import com.gyes.system.information.bean.Information; import com.gyes.system.information.service.InformationService; import com.gyes.system.information.service.impl.InformationServiceImpl; import com.gyes.system.user.bean.User; /** * 部门action * * @author Administrator * */ @ParentPackage(value = "struts-default") @Namespace(value = "/") @Action(value = "employAction", results = { @Result(name = "list", location = "/admin/system/employ/employ_list.jsp"), @Result(name = "add", location = "/admin/system/employ/employ_add.jsp"), @Result(name = "edit", location = "/admin/system/employ/employ_edit.jsp"), @Result(name = "infoList",location = "/admin/system/employ/employ_add.jsp"), }) public class EmployAction extends BaseAction{ @Autowired private EmployService employService; @Autowired private DictService dictService; @Autowired private InformationService informationService; private Employ employ; private String[] ids; private List<Employ> list; private String name; private Information information; //基础信息集合 private List<Information> infoList; private Map<String, Object> map = new HashMap<String, Object>(); // 显示数 private Integer pageSize; private Integer totalCount; private String pageTool; private Integer employId; // 字典中的性别集合 private List<Dict> employwayList; private String informationId; @Override public String execute() throws Exception { return null; } /** * 分页查询所有用户(list) * * @return * @throws Exception */ public String list() throws Exception { try { if (pageSize == null) { pageSize = 10; } PageUtil pageUtil = new PageUtil(request); pageUtil.setPageSize(pageSize); // 获取分页的参数 totalCount = employService.getTotalCount(); // 获取分页的参数 pageUtil.setRsCount(totalCount); pageSize = pageUtil.getPageSize(); int pageCount = pageUtil.getPageCount(); int currentPage = pageUtil.getCurrentPage(); // 产生分页的工具条 pageTool = pageUtil.createPageTool(PageUtil.Text); list = employService.getAll(currentPage, pageSize,name); } catch (RuntimeException e) { e.printStackTrace(); } return "list"; } /** * 增加就业信息 */ public String add() throws Exception { employ = employService.getEmploy(employ); //从数据字典读取就业方式 employwayList=dictService.getDictList("dic_employway"); return "add"; } /** * 用户基本信息查询 */ public String infoList() throws Exception { try { if (pageSize == null) { pageSize = 10; } PageUtil pageUtil = new PageUtil(request); pageUtil.setPageSize(pageSize); // 获取分页的参数 totalCount = informationService.getTotalCount(); // 获取分页的参数 pageUtil.setRsCount(totalCount); pageSize = pageUtil.getPageSize(); int pageCount = pageUtil.getPageCount(); int currentPage = pageUtil.getCurrentPage(); // 产生分页的工具条 pageTool = pageUtil.createPageTool(PageUtil.Text); //从基础信息读取所有基础信息 infoList = informationService.getAll(currentPage, pageSize,name); System.out.println(infoList+"##############################################################"); } catch (RuntimeException e) { e.printStackTrace(); } return "infoList"; } /** * 同一页面传递用户基本信息的姓名 */ public String getInformationName() throws Exception{ Information list=informationService.getById(informationId); System.out.println(list+"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); return list.getInformationname(); } /** * 保存新增内容 * * @return * @throws Exception */ public String save() throws Exception { try { employ.setCrateTime(DateUtil.getSysDateStr()); Dict dic = new Dict(); dic.setDictId(employ.getEmployway_id()); Dict dict = dictService.getById(dic); employ.setEmployway_id(dict.getDictId()); employ.setEmployWay(dict.getValue()); employService.insertEmploy(employ); map.put("success", true); } catch (Exception e) { e.printStackTrace(); map.put("success", false); map.put("message", e.getMessage()); } GsonUtil.writeToResponse(map, false); return NONE; } /** * 进入修改 * * @return */ public String update() throws Exception { employ = employService.getById(employ.getEmployId()); //从数据字典读取就业方式 employwayList=dictService.getDictList("dic_employway"); return "edit"; } /** * 保存修改后数据 * * @return */ public String saveEditEmploy() throws Exception { try { employ.setModifyTime(DateUtil.getSysDateStr()); Dict dic = new Dict(); dic.setDictId(employ.getEmployway_id()); Dict dict = dictService.getById(dic); employ.setEmployway_id(dic.getDictId()); employ.setEmployWay(dict.getValue()); employService.updateEmploy(employ); map.put("success", true); } catch (Exception e) { e.printStackTrace(); map.put("success", false); map.put("message", e.getMessage()); } GsonUtil.writeToResponse(map, false); return NONE; } /** * 判断用户名是否存在 * * @return */ public String AjaxName() throws Exception { MessageBean messageBean = new MessageBean(); messageBean.setFlag(false); List<Information> data = informationService.getInformationList(employ.getEmployName()); if (data.size() > 0) { messageBean.setFlag(true); } PrintWriter out = response.getWriter(); out.print(JsonUtil.objectToJson(messageBean)); return NONE; } /* * 删除部门 */ public String delete() throws Exception { try { employService.deleAbso(ids); map.put("success", true); } catch (Exception e) { e.printStackTrace(); map.put("success", false); map.put("message", e.getMessage()); } GsonUtil.writeToResponse(map, false); return NONE; } public Integer getEmployId() { return employId; } public void setEmployId(Integer employId) { this.employId = employId; } public EmployService getEmployService() { return employService; } public void setEmployService(EmployService employService) { this.employService = employService; } public DictService getDictService() { return dictService; } public void setDictService(DictService dictService) { this.dictService = dictService; } public Employ getEmploy() { return employ; } public void setEmploy(Employ employ) { this.employ = employ; } public List<Employ> getList() { return list; } public void setList(List<Employ> list) { this.list = list; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Map<String, Object> getMap() { return map; } public void setMap(Map<String, Object> map) { this.map = map; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getTotalCount() { return totalCount; } public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; } public String getPageTool() { return pageTool; } public void setPageTool(String pageTool) { this.pageTool = pageTool; } public String[] getIds() { return ids; } public void setIds(String[] ids) { this.ids = ids; } public List<Dict> getEmploywayList() { return employwayList; } public void setEmploywayList(List<Dict> employwayList) { this.employwayList = employwayList; ``` ``` } public List<Information> getInfoList() { return infoList; } public void setInfoList(List<Information> infoList) { this.infoList = infoList; } public InformationService getInformationService() { return informationService; } public void setInformationService(InformationService informationService) { this.informationService = informationService; } public Information getInformation() { return information; } public void setInformation(Information information) { this.information = information; } } ``` 最后是添加页面的代码 ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>菜单增加</title> <link href="${pageContext.request.contextPath}/admin/css/box_css.css" rel="stylesheet" type="text/css" /> <link href="${pageContext.request.contextPath}/admin/css/content_css.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="${pageContext.request.contextPath}/admin/script/jquery.js"></script> <link rel="stylesheet" href="${pageContext.request.contextPath}/admin/css/common.css" type="text/css"/> <script type="text/javascript" src="${pageContext.request.contextPath}/admin/script/common.js"></script> <script type="text/javascript" src="${pageContext.request.contextPath}/admin/js/ui.js"></script> <link href="${pageContext.request.contextPath}/admin/css/style.css" rel="stylesheet" /> <script language="javascript"> function checkEmployName(){ var formData = jQuery("#form1").serializeArray(); var saveURL = "<%=path%>/employAction!AjaxName?date="+new Date()+""; jQuery.post(saveURL,formData,function(jsonData){ var message = jsonData.message; var flag = jsonData.flag; if (flag == true){ document.getElementById('employName').value=''; mizhu.alert('', '用户名已经存在,请重新填写!',''); } },"json"); } function save(){ var employName=document.getElementById("employName"); if(employName.value==''){ mizhu.alert('', '用户名称不能为空',''); return false; } var employIndustry=document.getElementById("employIndustry"); if(employIndustry.value==''){ mizhu.alert('', '从事行业不能为空',''); return false; } var employ_workTime=document.getElementById("employ_workTime"); if(employ_workTime.value==''){ mizhu.alert('', '工作年限不能为空',''); return false; }else if(employ_workTime.value>=100){ mizhu.alert('', '工作年限请输入小于100的数字!!!!',''); return false; } var employWay=document.getElementById("employWay"); if(employWay.value==''){ mizhu.alert('', '就业方式必须选择!!!',''); return false; } var eduName=document.getElementById("eduName"); if(eduName.value==''){ mizhu.alert('', '教育机构名称不能为空',''); return false; } var companyName=document.getElementById("companyName"); if(companyName.value==''){ mizhu.alert('', '公司名称不能为空',''); return false; } var formData = jQuery("#form1").serializeArray(); var saveURL = "<%=path%>/employAction!save"; $.ajax({ type:"POST", url:saveURL, data:formData, dataType:"JSON", success:function(obj){ //alert(obj.success); if(obj.success){ $.message("success","新增用户信息成功...."); setTimeout(function(){ location.href="${pageContext.request.contextPath}/employAction!list"; }, 1000); }else{ $.message("error",obj.message); } } }); //不提交表单 return false; } function findOut(){ var name=$("#inputname").val(); var saveURL = "${pageContext.request.contextPath}/employAction!infoList?name="+name+""; if (saveURL!="/employAction!infoList?name=") { window.location.href = saveURL; var ifo=document.getElementById("info"); ifo.style.display="block"; alert(informationname); }else{ } return false; }; function yes(){ var emp=document.getElementById("emp"); emp.style.display="block"; return false; } </script> </head> <body> <div class="main"> <div class="increase_box"> <div class="increase_list"> <h3><b>就业信息管理</b><span></span></h3> <div class="increase_main"> <form id="form1" novalidate="novalidate"> <input type="hidden" id="employId" name="employ.employId" value='<s:property value="employ.employId"/>' /> <input type="hidden" id="informationId" name="information.informationId" value='<s:property value="information.informationId"/>' /> <tr> <td align="left" valin="middle"> <form action="${pageContext.request.contextPath}/employAction!infoList" method="post"> <td align="left" valign="middle" style="text-align:right; width:190px;"></td> <input type="text" class="input_k2" placeholder="请输入用户名" value="" id="inputname" /> </td> <td align="left" valign="middle" style="text-align:right; width:80px;"> <a class="byget" href="javascript:" onclick="findOut()">查询</a></td> </form> </tr> <table width="96%" border="0" align="center" cellpadding="0" cellspacing="0" class="box_news_show assessment_show" style="display: block" id="info"> <tr> <th width="10%" align="center" valign="middle" class="borderright">ID</th> <th width="10%" align="center" valign="middle" class="borderright">姓名</th> <th width="10%" align="center" valign="middle" class="borderright">入伍时间</th> <th width="10%" align="center" valign="middle" class="borderright">退伍时间</th> <th width="10%" align="center" valign="middle" class="borderright">入党时间</th> <th width="20%" align="center" valign="middle" class="borderright">所在单位</th> <th width="10%" align="center" valign="middle" class="borderright">状态</th> <th width="20%" align="center" valign="middle" class="borderright">身份证号码</th> <th align="center" valign="middle" class="borderright">录入人员</th> <th width="5%" align="center" valign="middle">操作</th> </tr> <s:iterator value="infoList" status="st"> <tr onMouseOut="this.style.backgroundColor='#ffffff'" onMouseOver="this.style.backgroundColor='#edf5ff'"> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="informationId"/></td> <td align="center" valign="middle" class="borderright borderbottom" ><s:property value="informationname"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="enlistmenttime"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="retiredtime"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="partytime"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="unit"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="stats"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="numbers"/></td> <td align="center" valign="middle" class="borderright borderbottom"><s:property value="entrypersonnel"/></td> <td><input type="submit" value="确定" class="button_1" onclick="yes()"/></td> </tr> </s:iterator> </table> <table width="96%" border="0" align="center" cellpadding="0" cellspacing="0" class="box_news_show assessment_show" style="display: none" id="emp"> <tr> <td width="20%" class="box_news_show_h3">用户名称: </td> <td width="28%" class="box_news_show_h1"> <input name="information.informaationname" type="text" class="input_k2" onblur="checkEmployName()" maxlength="20" id="infoname"/> <span style="color:red;" id="infoname">*</span> </td> <td width="20%" class="box_news_show_h3">从事行业</td> <td width="28%" class="box_news_show_h1"> <s:textfield name="employ.employIndustry" id="employIndustry" class="input_k2" /> <span style="color:red;" id="employIndustry">*</span> </td> </tr> <tr> <td width="20%" class="box_news_show_h3">工作年限</td> <td width="28%" class="box_news_show_h1"> <s:textfield name="employ.workTime" class="input_k2" id="employ_workTime" onkeyup="this.value=this.value.replace(/\D/g,'')"/>&nbsp;年 <span style="color:red;" id="employ_workTime">*</span> </td> <%-- <td width="20%" class="box_news_show_h3">就业方式</td> <td width="28%" class="box_news_show_h1"> <s:select name="employ.employway_id" list="employwayList" listKey="dictId" listValue="value" id="employWay" headerKey="" headerValue="请选择" class="input_k2"></s:select> <span style="color:red;" id="employ_employWay">*</span> </td> --%> </tr> <tr > <td width="20%" class="box_news_show_h3">培训机构名称</td> <td width="28%" class="box_news_show_h1"> <s:textfield name="employ.eduName" class="input_k2" id="eduName" /> <span style="color:red;" id="employ_eduName">*</span> </td> <td width="20%" class="box_news_show_h3">公司名称</td> <td width="28%" class="box_news_show_h1"> <s:textfield name="employ.companyName" id="companyName" class="input_k2" /> <span style="color:red;" id="employ_companyName">*</span> </td> </tr> </table> </div> </div> <div class="increase_bottom"><p> <input type="button" value="保存" class="button_1" onclick="save()"/> <input type="button" class="button_2" value="返回" onclick="history.go(-1)"/> </p> </div> <div class="clear"></div> </div> </form> </body> </html> ``` 求求各位大佬了,救救孩子吧............................
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
立即提问